Задать вопрос

Как настроить валидатор для формы из другой модели?

У меня есть одна общая форма Контакт, там 2 формы взяты из 2х моделей, ФИО c модели Fio, Номер с модели Phone. Для фио я валидацию настроил без проблем с Phone возникли сложности, он не валидирует своё поле, requared показывает но ничего не делает. Как настроить валидацию Номера в этой вьюшке ?
Вьюшка ФИО
<?php
/* @var $this TownController */
/* @var $model Town */
/* @var $form CActiveForm */
?>

<div class="form">


    <?php $this->beginWidget(
        'booster.widgets.TbModal',
        array('id' => 'myModal')
    ); ?>
    <?php $form = $this->beginWidget('booster.widgets.TbActiveForm', array(
        'id' => 'fio-form',
        'enableAjaxValidation' => true,
        'enableClientValidation' => true,
        'clientOptions' => array(
            'validateOnSubmit' => true,
            'validateOnChange' => true,
        ),
        'action' => Yii::app()->createUrl('fio/create')
    )); ?>

    <div class="modal-header">
        <a class="close" data-dismiss="modal">&times;</a>
        <h4>Создание контакта</h4>
    </div>

    <div class="modal-body">

        <?php echo $form->errorSummary($model); ?>
        <div class="row">
            <?PHP echo CHtml::form();
            $data = CHtml::listData(Town::model()->findAll(), 'ID', 'Town'); // первое поле, тут запрашивается  город и его id
            echo CHtml::dropDownList('ID', '', $data,
                array(
                    'prompt' => 'Выберите город',
                    'ajax' => array(
                        'type' => 'POST',
                        'url' => Yii::app()->createUrl('Fio/dynamicStreets'), //ссылка на метод в контроллере
                        'update' => '#Street_ID', //тэг для второго поля
                        'data' => array('ID' => 'js:this.value'),
                    )));
            echo CHtml::dropDownList('Street_ID', '', array(), array('prompt' => 'Выберите улицу')); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model, 'Building'); ?>
            <?php echo $form->textField($model, 'Building'); ?>
            <?php echo $form->error($model, 'Building'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model, 'Surname'); ?>
            <?php echo $form->textArea($model, 'Surname', array('rows' => 1, 'cols' => 40)); ?>
            <?php echo $form->error($model, 'Surname'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model, 'Patronymic'); ?>
            <?php echo $form->textArea($model, 'Patronymic', array('rows' => 1, 'cols' => 40)); ?>
            <?php echo $form->error($model, 'Patronymic'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model, 'Name'); ?>
            <?php echo $form->textArea($model, 'Name', array('rows' => 1, 'cols' => 40)); ?>
            <?php echo $form->error($model, 'Name'); ?>
        </div>
        <?php
        $this->widget('ext.widgets.reCopy.ReCopyWidget', array(
            'targetClass' => 'clone-this',
            'addButtonLabel' => 'Добавить номер',
            'addButtonCssClass' => 'add-clone',
            'removeButtonLabel' => 'Убрать поле',
            'removeButtonCssClass' => 'remove-clone',
            'limit' => 5,
        ));
        ?>

        <div class="clone-this">
            <?php echo $form->labelEx($phone, 'Type_ID'); ?>
            <?php echo $form->dropDownList($phone, 'Type_ID[]', CHtml::listData(Type::model()->findAll(), 'ID', 'Type_Phone')); ?>
            <?php echo $form->error($phone, 'Type_ID[]'); ?>

            <?php echo $form->labelEx($phone, 'Number'); ?>
            <?php echo $form->textField($phone, 'Number[]', array('rows' => 1, 'cols' => 40)); ?>
            <?php echo $form->error($phone, 'Number[]'); ?>
        </div>
    </div>
    <div class="modal-footer">
        <?php $this->widget(
            'booster.widgets.TbButton',
            array(
                'buttonType' => 'submit',
                'context' => 'primary',
                'label' => 'Сохранить'

            )
        ); ?>
        <?php $this->widget(
            'booster.widgets.TbButton',
            array(
                'label' => 'закрыть',
                'url' => '#',
                'htmlOptions' => array('data-dismiss' => 'modal'),
            )
        ); ?>
    </div>

    <?php $this->endWidget(); ?>
    <?php $this->endWidget(); ?>
</div><!-- form -->
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Ababinili Автор вопроса
Решил проблему с помощью стороннего валидатора использующего JavaScript и валидатор HTML5 bitsofco.de/realtime-form-validation. Мне хватило функционала
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы