1

このチュートリアルに基づいたログイン ポートレットを稼働させています。問題なく動作しますが、ログイン フォームにエラーがある場合、エラー メッセージはポートレット内に表示され、あまり目立ちません。

ポートレットは次のとおりです。

class UserLogin extends Portlet
{
    public $title='Login';

    protected function renderContent()
    {
        $form=new LoginForm;
        if(isset($_POST['LoginForm']))
        {
            $form->attributes=$_POST['LoginForm'];
            if($form->validate())
                $this->controller->refresh();
        }
        $this->render('userLogin',array('form'=>$form));
    }
}

エラーが発生した場合、エラーが目立つように表示され、何か問題が発生したことをユーザーに明確に示すことができる完全なログインフォームにログイン試行がリダイレクトされるようにすることをお勧めします。

次のようなもの:

if($form->validate())
    $this->controller->refresh();
else                
    $this->render('login',array('form'=>$form));

ただし、else ビットは正しくありません。それを実現する方法がわかりません。

4

1 に答える 1

1

あなたは次のようなものを使用しようとすることができます

else
{
    Yii::app()->user->setFlash('login', 'Login error');
    $this->controller->redirect(array('account/login'));
}

ここaccount/loginで、は個別のログインページのコントローラー/アクションのペアです。CWebUserのフラッシュメッセージシステムは、エラーメッセージを新しいアクションに配信するために使用されます(Yiiクックブック「フラッシュメッセージの操作方法」を参照)。

于 2010-08-12T11:44:53.000 に答える