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

Как в yii правильно принять массив?

Добрый день, столкнулся с такой проблемкой:

1. в модели создал публичное свойство $faq_array;
2. задал правила для неё array('faq_array','safe')
3. суть в том что для записи я кидаю несколько вопросов и ответов - организовано с помощью www.yiiframework.com/extension/jqrelcopy

4. в поведении прописываю:
public function beforeSave($event){
print_r($this->owner->faq_array);
...
}

Это не дает результатов. Но если заместо print_r пишу:
print_r($_POST);

То при распечатке массива выходит нужный мне:
[faq_array] => Array
        (
            [question] => Array
                (
                    [0] => Вопрос 1
                    [1] => Ответ 1
                )

            [answer] => Array
                (
                    [0] => Вопрос 2
                    [1] => Ответ 2
                )
)


Почему массив faq_array не попадает в модель до момента сохранения?

И еще вопрос, как в форме можно организовать поля - вопрос ответ, чтобы структура входящего массива поменялась на:

[faq_array] => Array
        (
             [0] =>Array
            (
               [question] => Вопрос 1
               [answer] => Ответ 1
            )   
            [1] =>Array
            (
               [question] => Вопрос 2
               [answer] => Ответ 2
            )   
         )


В данный момент у меня в форме такая ситуация:
<div class="alert alert-info copy_faq">
          <?php echo CHtml::label('Вопрос',''); ?>
          <?php echo CHtml::textField('faq_array[question][]',''); ?>
          <?php echo CHtml::label('Ответ',''); ?>
          <?php echo CHtml::textArea('faq_array[answer][]', ''); ?>
    </div>
  • Вопрос задан
  • 2298 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 2
andruxin
@andruxin
это надеюсь есть?
$model = new Model;
$model->attributes  = $_POST;

тогда в $model->faq_array будет, то что нужно.
Ответ написан
@Nc_Soft
Что за евент и овнер в beforeSave?
Ответ написан
Ваш ответ на вопрос

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

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