pjax с ActiveForm

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SpecDrum
Сообщения: 1
Зарегистрирован: 2017.07.07, 19:26

pjax с ActiveForm

Сообщение SpecDrum »

Всем привет!
Есть модель Contact со связью один-ко-многим к модели Numbers, вью update модели Contact должно предоставлять возможность создавать и сохранять новую модель Numbers, привязанную связью к редактируемой модели. Пытаюсь сделать через pjax, но что-то не получается, не сохраняет модели Numbers, не хватает знаний:
views\contact\_form.php:

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

...
<div class="contact-form">
    <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
    <?= $form->field($model, 'first_name')->textInput(['maxlength' => true]) ?>
    <?= $form->field($model, 'last_name')->textInput(['maxlength' => true]) ?>
    <?php Pjax::begin([
            'id' => 'add',
            'enablePushState' => false,
            'linkSelector' => 'a',
            //'formSelector' => 'numbers-form',
        ]); ?>
        // Сюда добавляется форма ввода нового номера из '../numbers/add'
    <?php Pjax::end(); ?>
    <?= Html::a('Добавить номер', ['../numbers/add', 'contactId' => $model->id], ['class' => 'btn btn-primary']) ?>
    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Создать' : 'Изменить', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>
    <?php ActiveForm::end(); ?>
    <?php
    $this->registerJs(
        "$(document).on('submit', 'form', function(event) {
                $.pjax.submit(event, '#numbers-form');
            })"
    );
    ?>
</div>
....
views\numbers\_add.php:

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

...
<div class="numbers-form">
    <?php
        $form = ActiveForm::begin(['id' => 'numbers-form']);
        $types = ArrayHelper::map(Types::find()->all(), 'id', 'name');
    ?>
    <?= $form->field($model, 'type_id')->dropDownList($types)->label('Тип'); ?>
    <?= $form->field($model, 'number')->widget(MaskedInput::className(),['mask' => '+7 (999) 999-9999']) ?>
    <?php ActiveForm::end(); ?>
</div>
...
Ответить