私は自分のログインフォームを作成してユーザーの試行を検証しています。 ここに私のコードです。Yii2:カスタマイズされたLoginFormが動作していません
LoginForm.php:インデックスの
namespace common\models;
use Yii;
use yii\base\Model;
use common\models\User;
class LoginForm extends Model{
public $username;
public $password;
public $rememberMe = true;
public $verification;
private $user;
public function rules(){
return [
[['username','password'],'trim'],
[['username','password'],'required','message'=>'Nothing Input Yet'],
['username','validateUsername'],
['rememberMe', 'boolean'],
];
}
public function validateUsername($attribute, $params){
$user = User::find()->where(['username'=>$this->$attribute])->asArray()->one();
if(!$user || md5($this->password)!=$user['password']){
$this->addError($attribute,'Username/Password Error');
}else{
$this->user = $user;
}
}
}
コード:
<div class="container">
<?=Html::beginForm('','post',['enctype'=>'multipart/form-data','class'=>'form-signin'])?>
<h2 class="form-signin-heading">Please sign in</h2>
<?=Html::label('Username','username',['class'=>'sr-only'])?>
<?=Html::input('text','username',$model->username,['id'=>'username','class'=>'form-control','placeholder'=>'Username','autofocus'=>true])?>
<?=Html::error($model,'username',['class'=>'error'])?>
<?=Html::label('Password','password',['class'=>'sr-only'])?>
<?=Html::input('password','password',$model->password,['id'=>'inputPassword','class'=>'form-control','placeholder'=>'Password'])?>
<?=Html::error($model,'password',['class'=>'error'])?>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<?=Html::submitButton('Login',['class'=>'btn btn-lg btn-primary btn-block'])?>
<?=Html::endForm()?>
</div>
ここでは、今、私の問題は、どんなI入力、ではありませんLoginController.php
namespace backend\controllers;
use yii\web\Controller;
use common\models\LoginForm;
use Yii;
class LoginController extends Controller{
public $layout = 'login' ;
public function actionIndex(){
$model = new LoginForm();
if($model->load(Yii::$app->request->post()) && $model->validate()){
return $this->redirect(['site/index']);
}else{
echo "bad";
}
return $this->render('index',['model'=>$model]);
}
}
ですそれを空白のままにしておけば、フォームを提出しても応答がありません。 「悪い」出力のみを表示します。 私はすべてのコードをチェックして、どこが間違っているかを知ることができませんでした。 LoginFormモデルからのエラーメッセージさえありません。例:「何も入力しない」
ps:exitと呼ばれる方法があるかもしれませんが、まだ試していないことがわかりました。自分のコードを最初にプロセスの次の組み込みメソッドに修正したいと思っています。
こんにちは、私はコントローラにエラーコードを追加し、空のArray()を返します。私のモデルをもう一度チェックして、エラーを見つけられない場合は、間違いがあるかどうかを見つけることができますか?ありがとうございました。 – newbrant
var_dump(\ Yii :: $ app-> request-> post())を試して、送信された値がOKであるかどうかを確認してください。 – scaisEdge
さらに、Yii2デバッグコンポーネントを使用して確認します。しかし、出力ページのリダイレクトやエラーメッセージには反応しません。 ** update **:post()にvar_dumpを使用し、実際に入力を取得します。しかし、まだ出力はありません。 – newbrant