2012-08-06 86 views
0

我弄亂了這個問題:刪除填充模型之後提交的屬性

在我的控制器的動作,我alreadly填充的特殊模型屬性(例如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'); ?> 

爲什麼不刪除它們compeletely?

回答

0

如果您在actionCreate模型中手動分配屬性,並從$_POST收集屬性,則無需在表單中爲該屬性呈現隱藏字段。

無論如何,很多時候在模型本身中做這種邏輯比較好,例如在beforeSave() method中,因爲大部分時間是模型邏輯而不是控制器邏輯。如果模型在其他控制器中使用,那麼您應該再次重複屬性賦值,但是如果它在模型中,那麼您可以保持代碼乾燥。

+0

但是,感謝您的回答,我只是在一本名爲「Yii開發敏捷web應用程序」的書中採取了一步。我只是想知道爲什麼作者已經爲AR類實例的屬性賦值了,然後,他仍然使用「hiddenField」爲該值保留輸入表單視圖(form.php)。我的意思是,爲什麼不徹底刪除它們,因爲我們已經將它添加到實例中了。 – Lebarn 2012-08-07 02:11:14

+0

本書的代碼是否與您的示例中的代碼完全相同? – 2012-08-07 06:24:35

+0

謝謝你的回答。 但是,我的問題主要集中在:我可以在填充到模型後刪除字段,還是必須堅持隱藏字段,這是一個「安全問題」,如果我完全刪除它的邏輯將在某處休息(事實上,當我刪除它時,我看不到任何錯誤)。 但直到我不在Yii吃晚飯,我真的需要你的幫助,因爲我的模糊想法。 謝謝! – Lebarn 2012-08-09 02:40:21