Yii2.0自定义表单问题 [ 2.0 版本 ]
学习了下,如果自定义input表单,需要注意种情况
一、严格遵守yii规范情况
input name = 模型名['数据库字段']
$model->load(Yii::$app->request->post())
,这种情况load的第二个参数无需设置
二、完全自定义
- input name 自己定义的(但是也要和数据字段一样)
$model->load(Yii::$app->request->post(),'')
,这种情况load的第二个参数需要设置为 ''public function load($data, $formName = null) { // 如果第二个参数==null那么会调用模型类名(不含 namespace)执行【例2】代码 //如果第二个参数==''那么执行【例1】代码 $scope = $formName === null ? $this->formName() : $formName; //例1 if ($scope === '' && !empty($data)) { // 如果 $scope 为空字符串,且 $data不为空,就设置属性 // 即 $formName 为空字符串,且 $data不为空 $this->setAttributes($data);//其实这个地方是一个GTE/POST数组 return true; //例2 } elseif (isset($data[$scope])) { // 否则,必须存在 $data[$scope],使用 $data[$scope] 去设置属性 $this->setAttributes($data[$scope]); //return true; } else { //如果啥也不是返回false return false; } }
关于csrf的问题,可以关闭也可以直接Yii::$app->getRequest()->getCsrfToken();
加上
另外关于关闭csrf,还有一种方法在当前控制器关闭该方法public $enableCsrfValidation = false;
ffchen
注册时间:2016-05-21
最后登录:2020-06-13
在线时长:11小时29分
最后登录:2020-06-13
在线时长:11小时29分
- 粉丝2
- 金钱190
- 威望20
- 积分500
共 1 条评论
自定义表单,是不可以用模型的验证规则的吗?如果想使用,有什么解决方案吗?