0

一部の基本機能について、コントローラーのアクションのレイアウトを書き出すことができません。アカウントの基本情報を提供するビューがあります。アカウントは多くのフィールドにまたがっているため、ユーザーは頻繁に保存する可能性が高くなります。私が経験したことは、保存を行うたびに新しい行が作成されることです。actionCreate が呼び出され、テーブル内のデータを単純にダンプします。すべてのデータが入力された状態で、ユーザーを同じインターフェイスに留めておく必要があります。

これまでに収集したものから、最初の保存ではnullであるため失敗するため、actionCreateメソッドのアクションパラメーターを使用できません。

私のactionCreateコントローラーメソッドからのコードスニペットに従ってください:

    public function actionCreate()
{
    $model=new Account;
    $accaddress=new AccAddress;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Account'],$_POST['AccAddress']))
    {
        $model->attributes=$_POST['Account'];

        if($model->save()) //Account data saving

            if (isset($_POST['AccAddress'])){
            //Yii::log('Dumping infomration for multiple models.');
            $accaddress->attributes=$_POST['AccAddress'];
            $accaddress->acc_id=$model->id;


            if ($pataddress->save()){//Account address saving
            }
            //$this->redirect(array('create','id'=>$model->id));
            }
    }

    $this->render('create',array(
        'model'=>$model,
        'accaddress'=>$accaddress,
        'tabss'=>$tabarray,
    ));
}

提案/コメントを心待ちにしています。前もって感謝します。

よろしく、 ファイサル

4

1 に答える 1

0

Gii で生成されたコードを使用しているように見えますが、これは良いことです。あなたの投稿からは、正確に何が問題なのかが少しわかりませんが、確認すべき点がいくつかありますか?

ユーザーが送信したデータに問題があり、それを修正する必要がありますか? その場合は、検証ルールを使用する必要があります。

レコードの作成と更新の両方に同じフォームを使用していますか? その場合は、ID を非表示のフォーム フィールドとしてどこかに含めていることを確認する必要があります。を実行する$model->attributes=$_POST['Account'];と、既存のレコードを更新できる唯一の方法は、ID が で出くわすフィールドの 1 つである場合です$_POST['Account']

問題はアカウントのアドレスですか? たとえば、1 つのアカウントに複数のアカウント アドレス モデルを関連付けようとしていますか? その場合、複数の可能なモデルを処理するために、ここにロジックを追加する必要があります。

うまくいけば、それらの1つが役立ちます。

于 2012-10-12T19:40:42.573 に答える