yii中其他模型字段的必填字段

时间:2013-01-25 13:32:14

标签: frameworks yii validationrules

我需要在First Model中存储记录。它有大约10个领域。现在,我需要为我在SECOND模型中存储的一个字段应用所需的规则,并且我从第三个模型中获取这个字段的这些值。(它是一个下拉字段)

如何在yii ??

中强制使用此字段

任何人都可以帮忙..

非常感谢,

1 个答案:

答案 0 :(得分:0)

您可以向模型添加其他属性和规则。您不必仅使用与数据库表中的字段直接相关的属性。我们来看一个基本的例子。您有一个用户(用户)表,其中包含以下字段:

  • ID
  • 电子邮件
  • 密码

您还有另一个表,用于存储具有以下结构的用户配置文件(UserProfile)信息:

  • ID
  • USER_ID
  • 国家

当用户创建自己的帐户时,您将拥有一个可以捕获其信息的表单。您的用户模型将具有以下规则:

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属性现在将成为User模型的一部分。您现在可以将其添加到表单中:

<?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();
      ...

希望能回答你的问题。