终身孤寂
- 终身孤寂 赞了回答
要一起用,
load()
只是加载数据,validate()
才是验证。
更新和添加都用save()
,yii通过$model->isNewRecord
来判断是不是一条新纪录,然后调用insert()
或者update()
。load()
和setAttributes()
方法都属于批量赋值,yii为了保护数据的安全性,是禁止批量赋值的,但是当数据符合rule规则的时候就可以批量赋值了,所以没写rules就不能用load()
。就算某个字段不需要什么规则,用户输入什么都可以,那么要把这个字段的规则设置safe,一般gii生成的model最后一行都是safe的。
你可以不用validate()
,因为save方法会先调用validate()
再执行insert()
或者update()
(看源码就知道)。 就算在底部写引入自己的jquery也是可以的
$this->registerJs($this->blocks['page'], \yii\web\View::POS_HEAD);
这个就是个例子,我在当然的view页面写的,把当前页面的代码放到头部。
对,一般都是头部加jquery ,不然下面用它的方法岂不是会报错,我听你意思是gridview里面的插件总是在尾部的最前端注册? 其实加载位置都可以自己调整的,想把拿个JS 放到哪个位置就放到哪。
自带那个jqeury 我也遇到过冲突的情况,我是在配置里面把他注掉了,然后写不同的公共文件加载jquery等文件。
如果你直接用F5刷新应该也是会报错,初步判断是因为 _csrf 验证的问题,这个是为了防止攻击设置的令牌。
在配置里面'components'=>array( 'request'=>array( // Enable Yii Validate CSRF Token 'enableCsrfValidation' => true, ), ),
就开启了。然后POST 请求的时候就会验证你的 _csrf。
如果你用组件的话,默认是有这个的,不需要你做处理,如果是你自己写的表单,就需要在form 里面加上这个字段,如下:<input type="hidden" value="<?php echo Yii::app()->getRequest()->getCsrfToken(); ?>" name="YII_CSRF_TOKEN" />
@drykiss 你在报错的控制器里面加上
public $enableCsrfValidation = false;
试试。 或者把我上面给你发那一句加到表单里试试!- 终身孤寂 2016-07-19 已签到连续签到2天,获得了10个金钱
如果你直接用F5刷新应该也是会报错,初步判断是因为 _csrf 验证的问题,这个是为了防止攻击设置的令牌。
在配置里面'components'=>array( 'request'=>array( // Enable Yii Validate CSRF Token 'enableCsrfValidation' => true, ), ),
就开启了。然后POST 请求的时候就会验证你的 _csrf。
如果你用组件的话,默认是有这个的,不需要你做处理,如果是你自己写的表单,就需要在form 里面加上这个字段,如下:<input type="hidden" value="<?php echo Yii::app()->getRequest()->getCsrfToken(); ?>" name="YII_CSRF_TOKEN" />
@drykiss 这句错误是提示你请求的数据没有得到验证,初步判断是你没有把令牌(_csrf)加到表单里面。我看你不知道它是什么东西所以告诉你是为了防止攻击的一个玩意,就好比你的QQ令牌,你不用令牌肯定提示你 “请输入令牌”,你不能说提醒你就代表你在攻击腾讯把...... 至于你这个错误时不时得出来,我猜是你在未加入令牌的表单提交的时候报的错。
<input type="hidden" value="<?php echo Yii::app()->getRequest()->getCsrfToken(); ?>" name="YII_CSRF_TOKEN" />
@YiiSoEasy 过奖啦!
如果你直接用F5刷新应该也是会报错,初步判断是因为 _csrf 验证的问题,这个是为了防止攻击设置的令牌。
在配置里面'components'=>array( 'request'=>array( // Enable Yii Validate CSRF Token 'enableCsrfValidation' => true, ), ),
就开启了。然后POST 请求的时候就会验证你的 _csrf。
如果你用组件的话,默认是有这个的,不需要你做处理,如果是你自己写的表单,就需要在form 里面加上这个字段,如下:<input type="hidden" value="<?php echo Yii::app()->getRequest()->getCsrfToken(); ?>" name="YII_CSRF_TOKEN" />
在下面~ 第一次用,代码没弄全
- 终身孤寂 回答了问题 退出功能有点小问题,请教一下
<input type="hidden" value="<?php echo Yii::app()->getRequest()->getCsrfToken(); ?>" name="YII_CSRF_TOKEN" />