Go 模板的基本使用

模板中的变量判断,只能判断true或者false

{{if .TrueCondi}}
TrueCondtion
{{end}}

{{if .FalseCondi}}
{{else}}
FlaseCondition.
{{end}}

嵌套.

{{with .user}}
{{end}}

循环

{{range .user}}
{{.name}}
{{.age}}
{{end}}

Go Mysql

数据库驱动使用的是: https://github.com/Go-SQL-Driver/MySQL

首先要先安装Mysql, 执行

go get github.com/Go-SQL-Driver/MySQL
package main

import (
	"database/sql"
	_ "github.com/Go-SQL-Driver/MySQL" // 引入数据库驱动
       	"fmt"
) 

func main() {
	// 连接mysql: db, err := sql.Open("mysql", "user:password@/dbname")
	db, err := sql.Open("mysql", "root:root@/mygo?charset=utf8")
	checkErr(err)

	//插入数据
	stmt, err := db.Prepare("INSERT users SET username=?,password=?")
	checkErr(err)
        // 执行Sql.
	res, err := stmt.Exec("admin", "admin")
	checkErr(err)

        //打印出执行成功的条数
	affect, err := res.RowsAffected()
        // 获取插入成功后的ID
        id, err := res.LastInsertId()

	fmt.Println(affect)
}

func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

PHP goto

今天才知道PHP也有类似于Go语言的goto语法

 10) {
    goto end; // 直接跳转到End.
  }
}

echo "test1";

end: {
  echo "test2";
}

http://www.php.net/manual/zh/control-structures.goto.php

GO web Hello world

Go 语言不需要Apache, Nginx等之类的服务器也可以运行.

package main

import (
	"fmt"
	"log"
	"net/http"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
	//这个写入到 w 的是输出到客户端的
	fmt.Fprintf(w, "Hello World!")
}
func main() {
	http.HandleFunc("/", sayhelloName)       //设置访问的路由
	err := http.ListenAndServe(":9090", nil) //设置监听的端口
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

Drupal 7 translation

程序执行顺序. 以下解释
Module: i18n_node

Node FORM 表单

1. node_add() 添加node跑的第一个函数
2. 接着获取node_form() 获取node表单. 里面会有一个node_object_prepare是整合node对象. 当你翻译一个已存在的node时, 你会发现跑了这个函数里面会多一个对象translation_source. 此对象由系统模块locale提供translation_node_prepare(). 此处的translation_source对象是由你在点击添加翻译以后根据传过来$_GET对象translation来获取. 传过的$_GET数据中还有target这个是lancode

在I18n模块中: i18n_node_form_node_form_alter() 这里覆盖了node默认的submit函数node_form_submit. 其实没有太大用处. 可以无视.

Node Save Process

主要的作用在于node_save中. 会调用Hook_node_insert. 这里会调用系统模块locale: translation_node_insert()
node_add();