Передача массива из формы

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Передача массива из формы

Сообщение Странник »

Друзья. Посоветуйте как передать массив из формы в контроллер.
Форма заполняется в два этапа. На первом определяется год месяц и т.д., а на втором в зависимости от года и месяца должен сформироваться список дат.
Сейчас делаю через

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

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'table-form',
    'enableAjaxValidation'=>false,
)); ?>
    <?php echo $form->errorSummary($model); ?>
<table>
    <tr>
        <td colspan="2">
            <div class="row">
                Выберите дни месяца
            </div>        
        </td>
    </tr>
<?php 
    for ($day = 1; $day <= $num_days; $day++) {
?>
    <tr>
        <td>
            <div class="row">
                <?php echo $i; ?>
            </div>        
        </td>
        <td>
            <div class="row">
                <?php echo $form->checkBox($model,'dates'); ?>
            </div>        
        </td>
    </tr>
<?php } ?>    
    <tr>
        <td colspan="2">
            <div class="row">
        <?php echo CHtml::submitButton('Создать'); ?>
            </div>        
        </td>
    </tr>
</table>    
<?php $this->endWidget(); ?>
Но в этом случае dates возвращается не массивом.
А как вернуть массив?
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Передача массива из формы

Сообщение zabachok »

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

<?php echo $form->checkBox($model,'dates', array('name'=>get_class($model).'[dates][]')); ?>
2b||!2b Just read the instructions
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Передача массива из формы

Сообщение Странник »

Спасибо!
Кое-что поправил и работает.)
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Передача массива из формы

Сообщение Странник »

Следующая проблема. Как пройти валидацию массива?
Писать свой валидатор?
В контроллере данные обрабатываются в цикле:

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

$model->attributes=$_POST['Time'];
foreach ($model->dates AS $key=>$value) {
...
    if($model->save()) {
        $this->render('create_data',array(
            'model'=>$model,
        ));
    }
}
 
Если в модели объявляю:

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

public $dates;
public function rules()
{
...
array('dates', 'type', 'type'=>'array'),
}
 
то записывается только последнее значение.
Если объявляю другие валидаторы - естественно ошибка.
Посоветуйте как обойти?
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Передача массива из формы

Сообщение zabachok »

2b||!2b Just read the instructions
Ответить