记录一次关于YII编程的相关技术笔记。
传值问题
如何通过控制器向视图传值:
控制器中:
$theTime=date("D M j G:i:s T Y");
$this->render('helloWorld',array('time'=>$theTime));
视图中:
YII默认控制器
配置文件 application/config/main.php修改,指定 defaultController即可, 如 'defaultController' => 'home',
输入前判定
有时候需要在操作某些工作前判定另外的模型是否存在,需要采用filters函数来实现:
public function filters()
{
return array(
'accessControl', //perform access control for CRUD operations
'projectContext + create', //check to ensure valid project context
// + 表示只在某些操作上判定,-表示除了该操作其他都判定
);
}
常用函数
CHtml::link()
CHtml::link("Hello",array('message/helloWorld'));
array('label'=>'Create Issue', 'url'=>array('create', 'pid'=>1)),//另外一种链接方式
updateByPk():直接更新某个字段的值(name=>value 键值对) User::model()->updateByPk($this->identity->id, array(‘lastlogin_time’ => new CDbExpression(‘NOW()’)));
唯一性
有时候需要判定用户名和邮箱唯一,需要在rules()中添加如下代码:
array('username,email', 'unique');
安全性
CDbCriteria 操作数据库的时候需要使用params方式,否则也存在注入等问题。
$scriteria = new CDbCriteria;
$scriteria->condition='tags=:tags';
$scriteria->params=array(':tags'=>$news->tags);