3

First Model にレコードを保存する必要があります。約10個のフィールドがあります。ここで、2 番目のモデルに保存している 1 つのフィールドに必要なルールを適用する必要があり、3 番目のモデルからこのフィールドの値を取得しています (ドロップダウン フィールドです)。

どうすればこのフィールドを yii で必須にすることができますか??

誰でも助けてください..

どうもありがとう、

4

1 に答える 1

0

モデルに追加の属性とルールを追加できます。データベース テーブルのフィールドに直接関連する属性だけを使用する必要はありません。基本的な例を見てみましょう。次のフィールドを持つユーザー (ユーザー) テーブルがあります。

  • ID
  • Eメール
  • パスワード

また、構造を持つユーザー プロファイル (UserProfile) 情報を格納する別のテーブルがあります。

  • ID
  • ユーザーID

ユーザーがアカウントを作成すると、ユーザーの情報を取得するフォームが作成されます。User モデルには次のようなルールがあります。

array('email, password', 'required'),
array('email', 'unique', 'message'=>'Email already in use'),
...

次のように、国の属性をUser モデルに追加できます。

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 --')); ?>

フォームを送信すると、$model->validate()メソッドは国フィールドを検証します。次のように、これを 2 番目のモデル (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();
      ...

うまくいけば、それはあなたの質問に答えます。

于 2013-01-26T23:14:19.497 に答える