我需要在第一个模型中存储一条记录。它有大约 10 个字段。现在,我需要为我存储在 SECOND 模型中的一个字段应用所需的规则,并且我从第三个模型中获取该字段的这些值。(它是一个下拉字段)
如何在 yii 中强制填写此字段?
任何人都可以帮忙吗..
非常感谢,
我需要在第一个模型中存储一条记录。它有大约 10 个字段。现在,我需要为我存储在 SECOND 模型中的一个字段应用所需的规则,并且我从第三个模型中获取该字段的这些值。(它是一个下拉字段)
如何在 yii 中强制填写此字段?
任何人都可以帮忙吗..
非常感谢,
您可以向模型添加其他属性和规则。您不必只使用与数据库表中的字段直接相关的属性。让我们看一个基本的例子。您有一个用户(用户)表,其中包含以下字段:
并且您有另一个存储用户配置文件 (UserProfile) 信息的表,其结构如下:
当用户创建他们的帐户时,您将拥有一个捕获他们信息的表单。您的用户模型将具有如下规则:
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();
...
希望这能回答你的问题。