其他型号的领域中所需的字段我需要存储在第一个模型的记录。它有大约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 –