0

Yii Framework サイトのページの一連の部分ビューを作成しました。各部分ビューは、メイン モデル クラスのサブセクションを呼び出すため、独自のモデルを持ちます。各部分ビューには独自のモデルがあるため、それぞれに個別のコントローラー クラスが必要ですか?

ユーザー コントローラーの loadModel 部分は次のとおりです。

public function loadModel($id,$model_name='Users')
{
    $model=Users::model()->findByPk($id);
    if($model===null)
        throw new CHttpException(404,'The requested page does not exist.');
    return $model;
}

ユーザーコントローラーのこのセクションから呼び出されています。

 public function actionProfile($id=''){        

        $user = Users::model()->find('username=:id', array
                (':id' => Yii::app()->user->id));           
        if(!$id){
            $id = $user->id;
            if(!$id)
            $this->redirect('login');
        }
        if( getUserSess('user_type') == 'Sitter') {
            $this->render('profile_detail', array('user_id' => $id ));
        } else {
            $this->render('petowner_profile_detail',array(
        'model'=>$this->loadModel($id),
    ));
        }
    }
4

1 に答える 1

1

私はあなたが何をしようとしているのか理解していると思います。私の答えはノーです。部分ビューごとに個別のコントローラー アクションは必要ありません。すべての部分ビューを呼び出すビューを作成します。gii を使用して CRUD 機能を作成すると、作成ビューと編集ビューの両方がフォームの部分ビューを呼び出すことがわかります。これと同じことを、ビュー ファイル内の複数の部分ビューのみを呼び出します。別のモデルが必要な場合は、まずコントローラーがそれらをメイン ビュー ファイルに渡して、部分ビューに渡すことができるようにしてください。うまくいけば、それはあなたを助けます。

関係がない場合のコードは次のとおりです。

$partialUser = new PartialUser::model->findByAttributes(array('uid'=>$id)); //IF NOT UID PUT WHATEVER YOU HAVE THE COLUMN NAME

            $this->render('petowner_profile_detail',array(
                'model'=>$this->loadModel($id),
                'partialUser' => $partialUser,
            ));

関係をセットアップした場合は、次のように簡単に実行できます。

$current_user = $this->loadModel($id);
            $this->render('petowner_profile_detail',array(
                'model'=> $current_user,
                'partialUser' => $current_user->partialUser, //whatever you set the name of the relationship as in the model
            ));
于 2012-09-04T17:01:50.550 に答える