ここにはいくつかの問題があります。まず、というオブジェクトを作成し、$loginForm
それに値を割り当てます。new LoginForm();
$loginForm = new LoginForm();
これを意図的に行っているLoginForm()
のか、何かを返す関数なのかメソッドなのかはわかりませんが、意図していたように感じます。
$loginForm = new LoginForm;
これにより、クラスLoginForm(デフォルトのYii webapp CFormModelクラス)の新しいインスタンスが作成されます。その場合でも、これを行うためのより良い方法があります。
最も簡単な方法は、 index.phpビュー内renderPartial
の既存のlogin.phpビュー(protected / views / site / login.phpにあります)を次のように呼び出すことです。
if(Yii::app()->user->isGuest) {
$this->renderPartial("loginform",array("model"=>new LoginForm));
} else {
echo 'JJJ';
}
これにより、ビューlogin.phpがレンダリングされ(レイアウトは既にレンダリングされているため、レイアウトはレンダリングされません。ここにドキュメントがrender
あります)、と呼ばれる変数に割り当てられrenderPartial
たモデルの新しいインスタンスを渡します。LoginForm
$model
多くの場合、login.phpビューの外観を編集して「適合」させる必要がありますが、このビューはSiteControlleractionLoginでも使用されていることに注意してください。
あとは、フォームの送信を処理するようにactionIndexを変更するだけです(既存のSiteController actionLogin機能をコピーするだけです) 。
もう1つの優れた解決策は、アプリケーション全体で使用できるログインフォームのウィジェットを作成することです。これについては説明しませんが、ここでSOで確認するか、このチュートリアルまたはこのチュートリアルを確認してください。