0

我搞砸了这个问题:

在我的控制器操作中,我已经用一个值填充了一个特殊的模型属性(例如 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'); ?>

为什么不完全删除它们?

4

1 回答 1

0

如果您手动将actionCreate属性分配给模型,以及从收集的属性$_POST,则无需在表单中为该属性呈现隐藏字段。

无论如何,很多时候最好在模型本身中执行这种逻辑,例如在beforeSave()方法中,因为大多数时候这是模型逻辑而不是控制器逻辑。如果模型在其他控制器中使用,那么您应该再次重复属性分配,但如果它在模型中,那么您可以保持代码 DRY。

于 2012-08-06T09:32:29.767 回答