뉴스 레터 신청 양식을 받았는데 이메일이 이미 데이터베이스에 존재하는 경우 오류 메시지를 표시하려고합니다.Yii2 이미 데이터베이스에 이메일이 있는지 확인하십시오.
public function actionSubscriber()
{
$subscriber_model = new Subscriber();
$request = Yii::$app->request;
if($request->isAjax && $subscriber_model->load($request->post())){
$subscriber_model->save();
}
}
보기 코드 :
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\helpers\Url;
?>
<h3>Subscribe to Newsletter</h3>
<?php $form = ActiveForm::begin(['id' => $subscriber_model->formName(), 'action' => ['project/subscriber'], 'enableAjaxValidation' => true]); ?>
<div class="input-group">
<?= $form->field($subscriber_model, 'email')->textInput()->label(false); ?>
<span class="input-group-btn">
<?php echo Html::submitButton('Sign Up', ['class' => 'btn btn-primary subscribe-btn']); ?>
</span>
</div>
<?php ActiveForm::end(); ?>
<?php
$script = <<< JS
$('#{$subscriber_model->formName()}').on('beforeSubmit', function(e){
var form = $(this);
$.post(
form.attr("action"),
form.serialize()
).done(function(data){
form.trigger("reset");
});
return false;
});
JS;
$this->registerJs($script);
?>
현재 코드 쇼 "하늘 메일"여기 가입자 모델에서 코드 Subscriber.php
<?php
namespace common\models;
use yii\db\ActiveRecord;
class Subscriber extends ActiveRecord
{
public static function tableName()
{
return 'subscriber';
}
public function rules()
{
return [
['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
[
'email', 'unique',
'message' => 'This email address has already been taken.'
]
];
}
}
?>
컨트롤러 행동입니다 및 "잘못된 이메일"메시지가 표시되지만 인증에 실패합니다. 고유 이메일. 내 코드에서 문제가 무엇인지 말해주십시오.
[이] (http://stackoverflow.com/questions/41205936/yii2-unique-validator-ignored) 도움이 될 것입니다 – gmc
제출 후 'This email address has been taken .' 메시지가 표시됩니다. 형태. 예, 양식 유효성 검사 중에 확인하려면 AJAX 요청을 구현해야합니다. 그러나 제출을 클릭하면 여전히 실패합니다. –
귀하의 컨트롤러에 귀하의 행동 기능을 보여주십시오. –