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

Как правильно передать два объекта одной формы yii2?

Добрый день! Не могу обработать два объекта одной формы.
Смысл такой. У меня есть модель, она не тянет ничего с базы, это просто форма с произвольными полями, в моем случае просто две даты. Но эту форму я буду использовать одновременно на нескольких отчетах. Поэтому я создаю два объекта одной и той же формы в контроллере.
Вот модель:
<?php


namespace app\models;


use yii\base\Model;

class ReportsForm extends Model
{
    public $date_one;
    public $date_two;

    public function attributeLabels()
    {
        return [
            'date_one' => 'Дата начала',
            'date_two' => 'Дата окончания',
        ];
    }

    public function rules(){
        return [
            [['date_one','date_two'],'required'],
            [['date_one','date_two'],'safe'],
        ];
    }
}


Вот контроллер:
public function actionEpicrisis(){
        $epicrisis = new ReportsForm(); // Форма для Отчета1
        $analyzes = new ReportsForm(); // Форма для Отчета2

        return $this->render('epicrisis',compact('epicrisis','analyzes'));
    } // Обработка отчетов

А вот экшен
<h2 class="animated bounceInRight">ОТЧЕТЫ</h2>
    <h2>ВЫБЕРИТЕ ПАРАМЕТРЫ</h2>
    <hr>
    <?php $form = ActiveForm::begin([
            'id'=>'report1'
    ])?>
    <?= $form->field($epicrisis,'date_one')->widget(DatePicker::class)?>
    <?= $form->field($epicrisis,'date_two')->widget(DatePicker::class)?>
    <?= Html::submitButton('Применить',['class' => 'btn btn-primary'])?>
    <?php $form = ActiveForm::end()?>

    <hr>
    <?php $form1 = ActiveForm::begin([
        'id'=>'report2'
    ])?>
    <?= $form1->field($analyzes,'date_one')->widget(DatePicker::class)?>
    <?= $form1->field($analyzes,'date_two')->widget(DatePicker::class)?>
    <?= Html::submitButton('Применить',['class' => 'btn btn-primary'])?>
    <?php $form1 = ActiveForm::end()?>
    <hr>

Далее эти формы я передаю в экшен, но вторая форма не работает (она идет ниже по коду). То есть первая работает, а вторая нет. Если я комментирую первую форму (Это все экшене), то вторая работает. В чем проблема не пойму, помогите разобраться.
У меня там на двух формах простой виджет даты стоит, так вот на второй форме он не отрабатывает, если насильно туда данные вбить и нажать Применить, то отрабатывает первая форма, хотя данные отправлял со второй
  • Вопрос задан
  • 636 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
@zerg2000
Ваши проблемы от того name у формы Одинаковый. Т.е. выход - две формы.
Чтобы не плодить одинаковые, можно использовать наследование. Т.е.
ReportsForm
и
ReportsForm2 extend ReportsForm

$epicrisis = new ReportsForm(); // Форма для Отчета1
$analyzes = new ReportsForm2(); // Форма для Отчета2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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