Проверка Ajax выполняет частичную проверку в Yii - PullRequest
0 голосов
/ 29 февраля 2012

Я хочу проверить свою форму с помощью метода Ajax Validation. Так что я внес изменения в код для файла вида, как это.

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'customers-form',
        'enableAjaxValidation'=>true,
        'enableClientValidation'=>true,
        'focus'=>array($model,'firstname,lastname,gender,email,contact_no,address,state,country'),
)); ?>

  <p class="note">Fields with <span class="required">*</span> are required.</p>

  <?php echo $form->errorSummary($model); ?>
  <div class="row">
    <?php echo $form->labelEx($model,'firstname'); ?>
    <?php echo $form->textField($model,'firstname',array('size'=>60,'maxlength'=>80)); ?>
    <?php echo $form->error($model,'firstname'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'lastname'); ?>
    <?php echo $form->textField($model,'lastname',array('size'=>60,'maxlength'=>80)); ?>
    <?php echo $form->error($model,'lastname'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'gender'); ?>
    <?php echo $form->radioButtonList($model,'gender',array('Male'=>'Male','Female'=>'Female'),array(
      'labelOptions'=>array('style'=>'display:inline;padding-right:10px'),'separator'=>'',));?>
    <?php echo $form->error($model,'gender'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'email'); ?>
    <?php echo $form->textField($model,'email',array('size'=>45,'maxlength'=>45)); ?>
    <?php echo $form->error($model,'email'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'contact_no'); ?>
    <?php echo $form->textField($model,'contact_no',array('size'=>45,'maxlength'=>45)); ?>
    <?php echo $form->error($model,'contact_no'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'address'); ?>
    <?php echo $form->textField($model,'address',array('size'=>60,'maxlength'=>120)); ?>
    <?php echo $form->error($model,'address'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'state'); ?>
    <?php echo $form->textField($model,'state',array('size'=>45,'maxlength'=>45)); ?>
    <?php echo $form->error($model,'state'); ?>
  </div>

  <div class="row">
    <?php echo $form->labelEx($model,'country'); ?>
    <?php echo $form->textField($model,'country',array('size'=>45,'maxlength'=>45)); ?>
    <?php echo $form->error($model,'country'); ?>
  </div>

  <div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
  </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

Я сделал правила для этой модели, как это

 public function rules()
  {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
      array('firstname,lastname,gender,email,contact_no,address,state,country', 'required'),
      array('firstname, lastname', 'length', 'max'=>80),
    );
  }

После всего этого кода я пришел к выводу, что все поля показывают валидацию в обычном режиме, но при прохождении Ajax Validation только Firstname, Lastname, Email показывает валидацию ajax. В остальных полях не отображаются какие-либоПроверка AJAX. Может кто-нибудь сказать мне, где я делаю не так? Любая помощь и предложение будет весьма заметно. Отредактировано Вот код для контроллера, который обрабатывает проверку Ajax

  protected function performAjaxValidation($model)
  {
    if(isset($_POST['ajax']) && $_POST['ajax']==='customers-form')
    {
      echo CActiveForm::validate($model);
      Yii::app()->end();
    }
  }

Ответы [ 2 ]

0 голосов
/ 23 октября 2013

Я пытался, вы можете следовать этому:

public function actionCreate()
{
$model=new Main;

if(isset($_POST['ajax']) )
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['Main']))

По виду:

$form=$this->beginWidget('CActiveForm', array(
'id'=>'main-form',
'enableAjaxValidation'=>true,
'htmlOptions'=>array('enctype'=>'multipart/form-data'),))

«Истина нужна»

0 голосов
/ 29 февраля 2012

Просто используйте это в модели actionCreate ()

 public function actionCreate()
  {
    $model=new Customers;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Customers']))
    {
      if(Yii::app()->getRequest()->getIsAjaxRequest())
      {
        echo CActiveForm::validate( array( $model)); 
        Yii::app()->end(); 
      }
      $model->attributes=$_POST['Customers'];
      $valid = $model->validate();
      if($valid)
      {
        $model->save();
        $this->redirect(array('view','id'=>$model->id));
      }
    }

    $this->render('create',array(
      'model'=>$model,
    ));
  }

Остальные файлы для просмотра будут такими же, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...