YII:除非有规则,否则验证不会填充模型?
我错过了什么。我有一个模型,里面有很多变量:YII:除非有规则,否则验证不会填充模型?,yii,Yii,我错过了什么。我有一个模型,里面有很多变量: class Car extends CFormModel { public $item1; public $item2; } 如果我使用item1=“one”和item2=“two”发布表单,并在控制器中执行以下操作: if(isset($_POST['Car'])) { $model->attributes = $_POST['Car']; if($model->validate()) {
class Car extends CFormModel
{
public $item1;
public $item2;
}
如果我使用item1=“one”和item2=“two”发布表单,并在控制器中执行以下操作:
if(isset($_POST['Car']))
{
$model->attributes = $_POST['Car'];
if($model->validate()) {
print_r($model);
...
...
在打印模型时,所有项目都没有值。但我将此添加到我的模型中:
public function rules()
{
return array( array('item1', 'required'));
}
然后填充item1,但不填充item2。那么如何获取可选字段的值呢?如果未为属性分配任何验证规则,则此属性是“不安全的”。如果属性不安全,则不能在那里批量分配任何内容,但可以直接分配变量
$model->item1 = $_POST{'car']['item1'];
如果您试图批量分配变量,您还应该在Yii跟踪日志中看到警告
要读取属性,请直接从属性中读取它
var_dump($model->item1);
因此,您甚至必须对可选字段应用验证?您可以将它们标记为safe-array('item1,item2','safe');但验证数据总是一个好主意。