@hollanditkzn

Как в одном контроллере сделать форму для добавление в другую таблицу бд?

У меня имеется основная где хранятся заказы и в полном просмотре заказа, хранятся в таблице Zakaz, на этой странице имеется кнопка доставка. при нажатие на нее открывается модальное окно. В модальном окне есть форма, которая должно сохранять данные в таблицу Courier.
Пример я набросал как описано в документации https://yiiframework.com.ua/ru/doc/guide/2/input-m...
Вот в контроллере как организовал
public function actionView($id)
    {
        $model = $this->findModel($id);
        $shipping = $this->findShipping($id);

        if ($shipping->load(Yii::$app->request->post()) && $shipping->save()) {
            return $this->redirect(['view', 'id' => $model->id_zakaz]);
        }

        if ($model->load(Yii::$app->request->post())) {
            $model->file = UploadedFile::getInstance($model, 'file');
            if(isset($model->file))
            {
            $model->file->saveAs('maket/Maket_'.$model->id_zakaz.'.'.$model->file->extension);
            $model->maket = 'Maket_'.$model->id_zakaz.'.'.$model->file->extension;
            $model->status = 4;
            }            
            $model->save();

            return $this->redirect(['view', 'id' => $model->id_zakaz]);
        } 
        return $this->render('view', [
            'model' => $this->findModel($id),
            'user_name' => $user_name,
            'shipping' => $shipping,
            'file' => $file,
        ]);
    }
protected function findModel($id)
    {
        if (($model = Zakaz::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }
    protected function findShipping($id)
    {
        if (($shipping = Courier::findOne($id)) !== null) {
            return $shipping;
        } else {
            throw new NotFoundHttpException("The requested page does not exist.");
            
        }
    }

В zakaz/view находится вот такой код
<?php Modal::begin([
            'header' => '<h2>Доставка<h2>',
            'size' => 'modal-lg',
            'toggleButton' => [
                'tag' => 'button',
                'class' => 'btn btn-info btn-sm',
                'label' => 'Доставка',
            ],
        ]);


        echo $this->render('shipping', ['shipping' => $shipping]); 

        Modal::end(); ?>

И питался в файле shipping
<?php 

use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>

<div class="zakaz-shippingForm">
	<?php $f = ActiveForm::begin(); ?>

	<?= $f->field($shipping, 'id_zakaz')->textInput() ?>
	<?php ActiveForm::end(); ?>
</div>

У меня сейчас выходит страницу с ошибкой
Not Found (#404)
The requested page does not exist
Как правильно написать и где я допустил ошибку?
Простой способ конечно это на отдельную страницу вывести эту форму, но хотелось бы конечно именно в модалке сделать
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Ад какой-то, как по коду так и описание вопроса. Давайте начнем с самого вероятного:
$model = $this->findModel($id);
$shipping = $this->findShipping($id);

Сильно сомневаюсь что и там и там одинаковый id. Как следствие одна из этих строк кидает:
throw new NotFoundHttpException("The requested page does not exist.");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы