其他型號的領域中所需的字段我需要存儲在第一個模型的記錄。它有大約10個領域。現在,我需要應用所需的規則,我存儲在SECOND模型中的一個字段,我從第三個模型中獲取這個字段的值(這是一個下拉字段)在警予
我該如何做到這一點在yii中必須填寫?
任何一個可以幫助請..
非常感謝,
其他型號的領域中所需的字段我需要存儲在第一個模型的記錄。它有大約10個領域。現在,我需要應用所需的規則,我存儲在SECOND模型中的一個字段,我從第三個模型中獲取這個字段的值(這是一個下拉字段)在警予
我該如何做到這一點在yii中必須填寫?
任何一個可以幫助請..
非常感謝,
你可以到一個模型添加附加屬性和規則。您不必僅使用與數據庫表中的字段直接相關的屬性。我們來看一個基本的例子。你有一個用戶(用戶)表,該表具有以下字段:
而且你必須存儲的用戶配置文件的另一表(用戶配置),它具有信息結構:
當用戶創建自己的帳戶,你會捕捉他們的信息的一種形式。您的用戶模型將有這樣的規則:
array('email, password', 'required'),
array('email', 'unique', 'message'=>'Email already in use'),
...
您可以爲國家添加屬性到您的用戶模型像這樣:
class User extends CActiveRecord {
public $country;
...
然後在你的規則,你可以添加新的屬性:
array('email, password, country', 'required'),
array('email', 'unique', 'message'=>'Email already in use'),
...
country屬性現在將成爲您的用戶模型的一部分。現在,您可以添加到您的窗體:
<?php echo $form->dropDownList($model,'country',CHtml::listData(Country::model()->findAll(),'id','country_name'),array('empty'=>'-- select a country --')); ?>
現在在你的表單提交,該$model->validate()
方法將驗證鄉間田野。你可以手動保存到你的第二個模型(UserProfile),如:
if(isset($_POST['User'])){
if ($model->validate()){
$user_profile = new UserProfile;
$user_profile->user_id = $model->id;
$user_profile->country = $model->country;
$user_profile->save();
...
希望能回答你的問題。
感謝愛斯基摩人..我會嘗試它 – Developer
沒問題,讓我知道如果你卡住了 –
如果你有在第二模型所需的規則,並傳遞一個第二個模型實例的形式,那麼它應該共同努力 –
所以我不必須發明第一模型所需的規則? – Developer
看到http://stackoverflow.com/questions/10405649/yii-dynamically-change-rules-from-controller –