ここでは、Yii noob。レイアウトでログインフォームYII
私は部分的にレンダリングされるドロップダウンログインフォームを作成しました。ユーザーの資格情報が正しいときにうまく動作し、どこにでもリダイレクトされます。しかし、フォームの検証や認証に失敗すると、エラーメッセージがログインフォームに渡されることはありません。私は問題は、私のログインフォームがメインレイアウトにあることだと思います。なぜなら、いつでもアクセス可能にしたいからです。そして、コントローラはレイアウトにきれいな変数を渡すことができません。
は、だからここSiteController
public function actionLogin()
{
$form = new LoginForm;
if (isset($_POST['LoginForm']))
{
$form->attributes=$_POST['LoginForm'];
//validate user input and redirect to user panel if valid
if($form->validate() && $form ->login())
{
$success = "oui";
$this->render('user_panel');
}
else
{
$success = $form->getError('login').$form->getError('password');
$this->render('index',array('success'=>$success));
//here I can pass the error messages to the index view for example, but not to the login form in the main layout, how can I do this?
}
}
}
の私のログインアクションはまた、ログインフォームで、私はその仕事をするか、trueにenableAjaxValidationに設定されていますか?コントローラにAjaxを介してフォームに直接応答することもできますか?
最後の質問:フォームは$ form-> errorSummary($ model)&というモデルを新しいLoginFormにエコーする必要があります。なぜそれはエラーサマリーを表示しないのですか?あなたの注意
私は、ログインフォームがレイアウトにあると言っていたので、エラーを渡すことはこのように動作していないようです。実際に 'index'をレンダリングする代わりに、ユーザーがログインしたビューをすべてレンダリングする必要があります。 – Arthur
$ modelは新しいLoginForm権限になっていますか? – Arthur