Я использую проверку Ajax в своем виджете. вот код.Yii Ajax Проверка в виджет не работает
функция Widget
public function run(){
if(!Yii::app()->user->isGuest){
$this->controller->redirect('/');
}
$model= new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
// blah blah.......
Widget Вид:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableAjaxValidation'=> true,
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
<div class="row">
<?php echo $form->textField($model,'username',array('placeholder'=>'email','class'=>'form-control')); ?>
<?php echo $form->error($model,'username'); ?>
</div>
<div class="row">
<?php echo $form->passwordField($model,'password',array('placeholder'=>'password','class'=>'form-control')); ?>
<?php echo $form->error($model,'password'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Login', array('class'=>'btn btn-primary btn-block')); ?>
</div>
...
- Сейчас форма не подает. После того, как я нажимаю login, ничего не происходит.
- Если я делаю enableAjaxValidation fale, форма работает, но не AJAX.
- Если я делаю enableClientValidation false, то формы работают , но все еще нет AJAX.
Любые идеи? Благодарю.
благодарит за помощь. Но я не думаю, что код выше работает. Я попробовал var obj = $ .parseJSON (данные); но он всегда возвращает недопустимый токен в консоли. – jackhao
Попробуйте это: В login.php, в 'ajaxOptions': .. 'ajaxOptions' => массив ( 'успех' => «функция (данные) { вар OBJ = $ .parseJSON (данные); оповещения (данные);. если (obj.login == "успех") { ... } еще {..} – Mundo
С этим предупреждением, вы можете увидеть, что возвращая JSON тем не менее, я думаю, что вы пропустил что-то в модели LoginForm.php. В ней вам необходимо установить правила исключения для ошибок: ... правила общественные функции() \t { \t \t возвращение массива ( массив ('имя пользователя', 'требуется Имя пользователя.' 'Требуется', 'сообщение' =>), массив ('пароль', 'требуется', ' message '=>' Требуется пароль. '), \t \t); \t} – Mundo