Вопрос по плагину client side валидации в yii

Вопросы по вёрстке и JavaScript
Ответить
Аватара пользователя
creocoder
Сообщения: 138
Зарегистрирован: 2010.01.24, 05:29
Откуда: Тамбов

Вопрос по плагину client side валидации в yii

Сообщение creocoder »

Есть форма:

Код: Выделить всё

    <?php
    $form = $this->beginWidget('CActiveForm', array(
        'action' => array('comment/create'),
        'enableClientValidation' => true,
        'clientOptions' => array(
            'validateOnSubmit' => true,
            'inputContainer' => '.control-group',
        ),
    ));
    ?>
        <div class="control-group">
            <div class="controls">
                <?php echo $form->textArea($model, 'content', array('class' => 'redactor')); ?>
                <?php echo $form->error($model, 'content', array('class' => 'help-block')); ?>
            </div>
        </div>

        <div class="form-actions">
            <?php echo CHtml::htmlButton(CHtml::encode('Комментировать'), array('type' => 'submit', 'class' => 'btn btn-primary')); ?>
        </div>
    <?php $this->endWidget(); ?>
Есть обработчик:

Код: Выделить всё

$('#$form->id').submit(function(e) {
    e.preventDefault();
    ...
});
 
Как у плагина client side валидации внутри этого обработчика поинтересоваться есть ли ошибки валидации в форме?
Аватара пользователя
creocoder
Сообщения: 138
Зарегистрирован: 2010.01.24, 05:29
Откуда: Тамбов

Re: Вопрос по плагину client side валидации в yii

Сообщение creocoder »

Вопрос решился вот так:

Код: Выделить всё

    <?php
    $form = $this->beginWidget('CActiveForm', array(
        'action' => array('comment/create'),
        'enableClientValidation' => true,
        'clientOptions' => array(
            'validateOnSubmit' => true,
            'inputContainer' => '.control-group',
            'afterValidate' => new CJavaScriptExpression("
function(form, data, hasError) {
    if (!hasError) {
        submitComment(form);
    }

    return false;
}
"),
        ),
    ));
    ?>
        <div class="control-group">
            <div class="controls">
                <?php echo $form->textArea($model, 'content', array('class' => 'redactor')); ?>
                <?php echo $form->error($model, 'content', array('class' => 'help-block')); ?>
            </div>
        </div>

        <div class="form-actions">
            <?php echo CHtml::htmlButton(CHtml::encode('Комментировать'), array('type' => 'submit', 'class' => 'btn btn-primary')); ?>
        </div>
    <?php $this->endWidget(); ?>
Вместо обработчика определяется функция submitComment(). Если у кого есть идея более эллегантного решения, просьба поделиться.
Аватара пользователя
AlexSimp
Сообщения: 568
Зарегистрирован: 2013.04.09, 11:30
Откуда: Киев

Re: Вопрос по плагину client side валидации в yii

Сообщение AlexSimp »

creocoder писал(а):Вопрос решился вот так:

Вместо обработчика определяется функция submitComment(). Если у кого есть идея более эллегантного решения, просьба поделиться.
Если я не ошибаюсь, это и есть академическое решение. Я, кажется, так и делал у себя в песочнице :)
Жду, когда на форуме появятся вопросы "как сделать сайт на Yii?" и "как сложить два числа с помощью Yii?"...
Аватара пользователя
creocoder
Сообщения: 138
Зарегистрирован: 2010.01.24, 05:29
Откуда: Тамбов

Re: Вопрос по плагину client side валидации в yii

Сообщение creocoder »

AlexSimp писал(а):
creocoder писал(а):Вопрос решился вот так:

Вместо обработчика определяется функция submitComment(). Если у кого есть идея более эллегантного решения, просьба поделиться.
Если я не ошибаюсь, это и есть академическое решение. Я, кажется, так и делал у себя в песочнице :)
Скажем это предельно академическое решение на текущий момент. Оно было бы по настоящему академическим если бы плагин клиент сайт валидации имел бы метод, который можно вызвать внешне и посмотреть есть ли в форме ошибки валидации. Буду делать тикет на эту тему.
Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Вопрос по плагину client side валидации в yii

Сообщение Skiller »

Да, неплохо бы получать список ошибок на клиенте :)
Ответить