YII Framework формы проверки AJAX только часть ввода - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть форма сборки с YII Framework. Первые 2 входа - это «first_name» и «last_name», и у меня есть еще много входов в той же форме. Я проверяю валидацию с помощью «ajaxSubmitButton», и я хочу сначала проверить, только «first_name» и «last_name» проходят валидацию, и если они это сделают в следующий раз, когда пользователь отправит свою заявку, будут проверены все формы.

Модель -> Правила

        array('first_name, last_name', 'length', 'min'=>2 , 'on' => 'setup'),
                    array('first_name, last_name , email, subject , message', 'length', 'min'=>2 , 'on' => 'submit'),

Кнопка Ajax в представлении ->

         <?php echo CHtml::ajaxSubmitButton( 'Submit',
                                                                    CHtml::normalizeUrl(array('SubmitForm')),
                              array(
                    'error'=>'js:function(){
                                      alert(\'error\');
                                            }',
                            'beforeSend'=>'js:function(){
                                           alert(\'beforeSend\');
                                                                    }',
                                                                    'success'=>'js:function(data){
                                                                        alert(data);


                                                                    }',
                                                                    'complete'=>'js:function(){
                                                                       // alert(\'complete\');
                                                                    }',
                                                                    'update'=>'#updatebox',
                                                                    ) ,array('id'=>'submit')
                                                                );
                                ?>

Контроллер>

    public function actionMessageForm()
{
    $model = new Message;
        if(isset($_POST['Message']))
        {
              $model->attributes=$_POST['Message'];
              $valid = $model->validate('setup');
              if($valid)
              {
                  echo "pass";
                $model->save();
              } 
              else
              {
                   echo "failed";
              }

        }

}

Как я могу частично проверить входные данные? Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

используйте сценарии, братан

http://www.yiiframework.com/wiki/266/understanding-scenarios/

создайте один сценарий "buttafuoco" (называйте как хотите), где требуются только имя и фамилия

, еслиэто подтверждает, переключите сценарий на «благоевич» (новый сценарий), где все поля обязательны для заполнения.

вам может потребоваться сохранить имя текущего сценария в сеансе или в переменной сообщения

1 голос
/ 02 апреля 2012

У вас есть ошибка в вашем контроллере. Это:

public function actionMessageForm()
{
    $model = new Message;
        if(isset($_POST['Message']))
        {
              $model->attributes=$_POST['Message'];
              $valid = $model->validate('setup');

должно быть так:

public function actionMessageForm()
{
    $model = new Message;
        if(isset($_POST['Message']))
        {
              $model->scenario = 'setup'; <-- changed
              $model->attributes=$_POST['Message'];
              $valid = $model->validate(); <-- passing a value in here is passing an attribute

или это:

public function actionMessageForm()
{
        if(isset($_POST['Message']))
        {
             $model = new Message('setup');

Это помогает?

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