2013-04-03 75 views
0

我想禁用更新规则模型上的字段,但我有错误。规则模型禁用字段yii

我尝试这样的:

array('date', 'constraint', 'readOnly'=>true, 'on'=>'update'), 

,但我有此错误:

“包括(constraint.php):未能打开流:没有这样的文件或目录”

我可以禁用视图使用htmloptions,但我需要从模型做它,因为更新我需要禁用超过5个字段。

我怎么能这样做?

THX提前

+0

该错误是因为无法找到'Constraint'验证程序。如果下一步需要这些值,则可以使用纯文本显示值和隐藏字段,而不是禁用这些字段。 – topher

+0

我需要禁用它们以避免修改,但我需要让它们可见。 – user468891

+0

我认为这里的'约束'验证可能来自http://www.yiiframework.com/forum/index.php/topic/4570-set-some-active-record-as-read-only/page__view__findpost__p__24179。那篇文章继续说你需要创建一个。我还没有设法让这个工作。 – russellfeeed

回答

5

您声明与不存在的验证规则,所以这是正常的,你有一个错误:

array('date', 'constraint', 'readOnly'=>true, 'on'=>'update'), 

此行是做如下:应用验证者constraint的0123xx字段update场景,参数readOnly设置为true

验证器constraint不存在在Yii中有一个内置函数,所以如果你没有创建它,那么它不存在!

文档:

编辑:在你的表格,你可以这样做:

<?php 
    echo $form->textField(
     $model, 
     'email', 
     array('readonly'=>($model->scenario == 'update')? true : false) 
    ); 
?> 

正如你所看到的只读值将取决于场景。

+0

是的,你是对的。我在_form上使用array('readonly'=> true),但存在另一种更优雅的形式? – user468891

+0

哼哼我觉得你在做什么很好。查看我的编辑解决方案! – darkheir

+0

我被定义为 '<?php if($ model-> isNewRecord){...' 但您的解决方案更好。 Thx很多 – user468891