Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii使用不同字段创建、更新表单_Yii_Field_Crud - Fatal编程技术网

Yii使用不同字段创建、更新表单

Yii使用不同字段创建、更新表单,yii,field,crud,Yii,Field,Crud,在Yii中,相同的表单通常用于创建和更新。 所以,如果我有像Email、Password等字段,那么其他字段。。。。在创建期间,但我不想在更新期间专门显示电子邮件和密码字段,但所有其他剩余字段都应该在更新中。如何在不更改_form.php的情况下实现这一点 此外,还有更多的实例,如-date_entered、date_updated等,它们从不需要显示,而是在内部进行评估并存储到表中。隐藏字段将不再有用,因为它们在源代码中仍然可见。我能想到的唯一方法是,从_form.php中完全删除这些字段 我

在Yii中,相同的表单通常用于创建和更新。 所以,如果我有像Email、Password等字段,那么其他字段。。。。在创建期间,但我不想在更新期间专门显示电子邮件和密码字段,但所有其他剩余字段都应该在更新中。如何在不更改_form.php的情况下实现这一点

此外,还有更多的实例,如-date_entered、date_updated等,它们从不需要显示,而是在内部进行评估并存储到表中。隐藏字段将不再有用,因为它们在源代码中仍然可见。我能想到的唯一方法是,从_form.php中完全删除这些字段

我尝试过使用规则(),比如“安全”,也使用过场景,但我无法解决这个问题


非常感谢您在这方面提供的任何帮助。

对于编辑/更新操作,请在模型对象中将isNewRecord字段设置为true/1



只需在_form.php中签入此字段,如果为false,则添加电子邮件和密码字段/0。

您要做的事情非常简单

您可以创建另一个表单,比如说,_form2,然后将原始数据从_表单复制粘贴到该表单中,然后删除您不希望填充的数据

因此,在此之后,假设您不希望在更新时电子邮件出现,因此进入控制器并像这样编辑操作,然后呈现另一个表单:

public function actionUpdate($id){
$model = new WhateverModel();
// Lets say that you want to insert your own data it any field, do it like this :
$model->whateverattribute_column = $whateverData;
#some code is here... yada yada
$this->render('update',array('model'=>$model));

}
之后,您可以在“更新”视图中渲染部分,如下所示:

<?php $this->renderPartial('_form2',array('model'=>$model)); ?>


完成了

你为什么不想改变形式?一个强大的框架的目的是什么。Write rules(),模型内的场景(即,每个属性都在哪里),这是一个删除某些属性(即,标签、字段和所有内容)的问题。谢谢,但我想坚持使用CActiveForm,而不是使用CHtml。因此,我如何使用它作为论点。例如,使用CHtml,它可以像这样:CHtml::submitButton($model->isNewRecord?'Create':'Save');但是如何在$form->textField等中应用它,假设$form是cactiveform的一个实例,您可以将_form.php的内容复制粘贴到_update_form.php中,然后根据需要编辑它的内容。您只需在控制器更新方法中呈现新文件。如果不想编辑_form.php,只需复制_form.php并将其保存为_edit_form.php即可。然后根据需要更新代码。在控制器的更新函数中呈现这个_edit_form.php。是的,我就是这样得到的。但是我想在整个街区内不要应用这个条件语句。是的。这就是我们使用条件块的原因。:-)我认为这是正确的答案。应该检查一下。
<?php $this->renderPartial('_form2',array('model'=>$model)); ?>