我搞砸了这个问题:
在我的控制器操作中,我通常使用一个值填充了一个特殊的模型属性(例如,如下所示的project_id属性):
public function actionCreate()
{
$model=new Issue;
$model->project_id = $this->_project->id;
if(isset($_POST['Issue']))
......
那么为什么在_form.php中进行上述创建操作我们必须使用hiddenField来获取此属性:
<?php echo $form->hiddenField($model,'project_id'); ?>
为什么不完全删除它们?
答案 0 :(得分:0)
如果您将actionCreate
属性中的$_POST
属性手动分配给模型,以及从{{1}}收集的属性,则无需在表单中为该属性渲染隐藏字段。 / p>
无论如何,很多时候在模型本身中做这种逻辑会更好,例如在beforeSave()
method中,因为大多数情况下这是模型逻辑而不是控制器逻辑。如果模型在其他控制器中使用,那么您应该再次重复属性分配,但如果它在模型中,那么您可以保持代码干燥。