사용자 시도의 유효성을 검사하기 위해 자체 로그인 양식을 쓰고 있습니다. 내 코드는 다음과 같습니다.Yii2 : 사용자 정의 로그인 폼이 작동하지 않습니다.
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>
이
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]);
}
}
이제 내 문제는 LoginController.php입니다 내가 입력 공백으로두면 양식을 제출 한 후 응답이 없습니다. "나쁜"출력 만 표시하십시오. 모든 코드를 검사했는데 어디서 잘못되었는지 알 수 없습니다. LoginForm 모델의 오류 메시지도 아닙니다. 예 : '아무 것도 입력하지 않음'.
ps : 출구라고하는 방법이있을 수 있지만 아직 시도하지 않은 것으로 나타났습니다. 내 고유 코드를 먼저 다음 기본 제공 방법으로 수정하고 싶습니다.
안녕하세요, 컨트롤러에 오류 코드를 추가하고 빈 Array()를 반환합니다. 그리고 내 모델을 다시 확인하고, 오류를 찾을 수 없으며, 실수가 있는지 찾을 수 있습니까? 고맙습니다. – newbrant
var_dump (\ Yii :: $ app-> request-> post())를 시도하고 제출 된 값이 ok인지 확인하십시오. – scaisEdge
더하기, Yii2 디버그 구성 요소를 사용하여 페이지가 $ _POST를 올바른 입력으로 제출하는 것 같습니다. 그러나 출력 페이지의 리다이렉트 나 에러 메시지에 아무런 반응이 없습니다. ** 업데이트 ** : post()에 var_dump를 사용하고 실제로 입력을 검색합니다. 그러나 여전히 출력이 없습니다. – newbrant