Frameworks 其他型号的必填字段';易建联农场

Frameworks 其他型号的必填字段';易建联农场,frameworks,yii,validationrules,Frameworks,Yii,Validationrules,我需要在第一个模型中存储一个记录。它有大约10个字段。现在,我需要为存储在第二个模型中的一个字段应用必需的规则,并从第三个模型中获取该字段的值。(这是一个下拉字段) 如何在yii中将此字段设为必填字段 有人能帮忙吗 非常感谢,您可以向模型添加其他属性和规则。您不必只使用与数据库表中的字段直接相关的属性。让我们看一个基本的例子。您有一个用户(user)表,其中包含以下字段: 身份证 电子邮件 密码 您还有另一个存储用户配置文件(UserProfile)信息的表,其结构如下: 身份证 用户id

我需要在第一个模型中存储一个记录。它有大约10个字段。现在,我需要为存储在第二个模型中的一个字段应用必需的规则,并从第三个模型中获取该字段的值。(这是一个下拉字段)

如何在yii中将此字段设为必填字段

有人能帮忙吗


非常感谢,

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

  • 身份证
  • 电子邮件
  • 密码
您还有另一个存储用户配置文件(UserProfile)信息的表,其结构如下:

  • 身份证
  • 用户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'),
...
国家属性现在将成为用户模型的一部分。现在,您可以将其添加到表单中:

<?php echo $form->dropDownList($model,'country',CHtml::listData(Country::model()->findAll(),'id','country_name'),array('empty'=>'-- select a country --')); ?>

希望这能回答你的问题

如果您在第二个模型中有一个必需的规则,并且您正在将第二个模型实例传递给表单,那么它应该全部工作。我不需要在当前的第一个模型中有必需的规则??请看这一切都取决于字段,从我收集的数据来看,字段来自第二个模型,而不是第一个,因此在第二个模型中有规则。如果两个模型中都有该字段,那么您需要这两个模型的规则。您阅读了吗?没问题,如果遇到问题,请告诉我
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();
      ...