Yii2, рендеринг ActiveForms из другой модели внутри ListView - PullRequest
0 голосов
/ 13 января 2020

Я изо всех сил пытаюсь изменить некоторые данные, которые я передаю listView с ActiveDataProvider.

Это часть моей _form.php

модели здесь представляет продукт.

_form. php

use common\models\Product


<?php $form = ActiveForm::begin();?>


<?php echo
    ListView::widget([
        'dataProvider' => new yii\data\ActiveDataProvider
        ([
            'query' => common\models\productsAdditionalInfo::find()->where(['code' => $productsArray]),
            'pagination' => false,
        ]),
        'itemView' => '_list-grammature',
    ]);

?>
<?php ActiveForm::end();?>

В моем _list-grammature.php я в основном рендеринг данных из productsAdditionalInfo, который также является контейнер, который взял данные из других таблиц.

_list-grammature. php

<?php

    $additionalInfoForm = ActiveForm::begin(
        [
            'id' => "form-grammatura-{$idFormAndButton}",
            'method' => 'post',
            'action' => ['backend\controllers\productsAdditionalInfoController/updateProductsAdditionalInfo'],
        ]
    );
?>

    <th colspan="4">Factory</th>
</tr>
<?php
    echo $this->render(
        'items/_factory-list',
        [
            'form' => $form,
            'forCode' => $model->code,
            'factories' => $model->factories,
        ]
    );
?>
</tbody>
<tbody>
    <tr>
        <th colspan="4">Raw Materials</th>
    </tr>
    <?php
        echo $this->render(
            'items/_raw-materials-list',
            [
                'form' => $form, 'forCode' => $model->code,
                'rawMaterials' => $model->rawMaterials,
            ]
        );

        echo Html::submitButton(
            '<i class="fas fa-cloud-upload"></i> Save',
            [
                'id' => "btn-save-{$model->firm_id}",
                'class' => 'btn btn-primary has-icon-left px-4 mx-2 elevation-5',
            ]
        )
    ?>
<?php $additionalInfoForm->end();?>

Я взял только небольшую часть страницы, чтобы дать намек на ее поведение.

В основном часть рендеринга работает так, как я ожидал, но когда я пытаюсь изменить различные textArea / input и отправить изменения, страница все еще привязывается к модели Products и не моя ProductsAdditionalInfo модель.

Строка запроса в соответствии с тем, что я говорю:

http:/.../backend/PRODUCTS/update?id=10

Я не знаю, делаю ли я лецит Операция, я в основном вставляю в ActiveForm, ListView, который создает несколько ActiveForms из другой модели, но когда я пытаюсь представить один из внутренних ActiveForms его вверх датирует (без данных) модель внешней ActiveForm.

Что, по-моему, я думал получить:

<form Product>

    <form1 productsAdditionalInfo>
        <button1 submit data to productAddionalInfo>
    </form1 productsAdditionalInfo>

     <form2 productsAdditionalInfo>
        <button2 submit data to productAddionalInfo>
    </form2 productsAdditionalInfo>

<Button submit Product>
</form Product>

Что вместо этого я получаю:

<form Product>

    <div data-key=Product1>
        <button1>
    </div data-key=Product1>

     <div data-key=Product2>
        <button2>
    </div data-key=Product2>

<Button submit Product>
</form Product>
...