次のように、ユーザーコントローラーにactionSearchTypeがあります。
public function actionSearchType()
{
if (Yii::app()->user->isGuest == true)
$this->render('login');
else
$this->render('search_type');
}
ユーザーコントローラーでのactionLoginは次のとおりです。
public function actionLogin()
{
$model= new Users();
// if it is ajax validation request
if(isset($_POST['ajax']))
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
$this->redirect(Yii::app()->user->returnUrl);
}
}
// display the login form
$this->render('login',array('model'=>$model));
}
目標は、認証されたユーザーのみが検索タイプビューのオプションを実行できるようにすることです。このページを実行すると、というエラーが表示されますUndefined variable: model
。
ログインビューのスニペットは次のとおりです。
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username'); ?>
<?php echo $form->error($model,'username'); ?>
</div>
上記のエラーを修正し、認証されたユーザーがいることを確認するために適切にチェックするには、どのような手順を実行する必要がありますか?
更新 actionSearchTypeを変更して、以下のようにログインウィジェットをレンダリングしました。
public function actionSearchType()
{
if (Yii::app()->user->isGuest)
$this->widget('ext.LoginWidget');
else
$this->render('search_type');
}
これは確かに最初に見られたエラーを解決しました。新しい問題は、レンダリング時にログインウィジェットのスタイルが設定されていないことです。タグを適切なスタイルシートクラスでエコーする必要がありますか、それとももう少しエレガントな方法がありますか?