public function actionView($id)
{
$model = $this->findModel($id);
$notification = new Notification();
$shipping = new Courier();
if ($shipping->load(Yii::$app->request->post()) && $shipping->save()) {
$model->id_shipping = $shipping->id;
$model->save();
$notification->saveByIdUser(7);
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
if ($model->load(Yii::$app->request->post())) {
$model->uploadFile()->save();
if ($model->status == 3 || $model->status == 6)
$notification->saveByIdUser($model->status)
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
// Создаем параметр notifications в модели view, где будем хранить массив
// И передаем туда массив объектов Notification
$this->view->params['notifications'] = Notification::find()->all();
return $this->render('view', [
'model' => $this->findModel($id),
'user_name' => $user_name,
'shipping' => $shipping,
'file' => $file,
]);
}
// Ваш код шаблона
// ...
//
foreach($this->params['notifications'] as $notification){
// Действия с экземпляром модели Notification, например
echo $notification->name;
}
public function actionView($id)
{
$model = $this->findModel($id);
$notification = new Notification();
$shipping = $model->idShipping; // Здесь в присваиваете в $shipping id
$shipping = new Courier(); // А здесь сразу переопределяете $shipping, то есть строчка выше не нужна
if ($shipping->load(Yii::$app->request->post()) && $shipping->save()) {
$model->id_shipping = $shipping->id;//Оформление доставки
// В модели Notification пишем функцию saveByIdUser($id), которая будет сохранять
// уведомление в зависимости от id, что бы не писать бизнес логику в контроллере
$notification->saveByIdUser(7);
$model->save();
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
if ($model->load(Yii::$app->request->post())) {
// Для загрузки файлов лучше написать отдельный метод в модели например uploadFile()
// который будет проверять размер файла, наличие каталога, генерировать случайное имя и т.д.
// во избежании проблем в будущем.
/* Тогда это можно будет убрать из контроллера
$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;
$notification->saveByIdUser(5);
} */
$model->uploadFile();
$model->save();
if ($model->status == 3 || $model->status == 6)
$notification->saveByIdUser($model->status)
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
return $this->render('view', [
'model' => $this->findModel($id),
'notification' => $notification,
'user_name' => $user_name,
'shipping' => $shipping,
'file' => $file,
]);
}
public function actionView($id)
{
$model = $this->findModel($id);
$notification = new Notification();
$shipping = new Courier();
if ($shipping->load(Yii::$app->request->post()) && $shipping->save()) {
$model->id_shipping = $shipping->id;
$model->save();
$notification->saveByIdUser(7);
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
if ($model->load(Yii::$app->request->post())) {
$model->uploadFile()->save();
if ($model->status == 3 || $model->status == 6)
$notification->saveByIdUser($model->status)
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
return $this->render('view', [
'model' => $this->findModel($id),
'notification' => $notification,
'user_name' => $user_name,
'shipping' => $shipping,
'file' => $file,
]);
}
use app\models\Notification;
class ZakazController extends Controller
{
public function actionView($id)
{
$model = $this->findModel($id);
$notification = new Notification();
$shipping = $model->idShipping;
$statusDisain = $model->statusDisain;
$status = $model->status;
$shipping = new Courier();
if ($shipping->load(Yii::$app->request->post()) && $shipping->save()) {
$model->id_shipping = $shipping->id;//Оформление доставки
$notification->id_user = 7;//оформление уведомление
$notification->name = 'Доставка '.$model->description;
$notification->active = 0;
$notification->save();
$model->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;
$notification->id_user = 5;//оформление уведомление
$notification->name = 'Дизайнер выполнил работу №'.$model->id_zakaz.' '.$model->description;
$notification->active = 0;
}
$model->save();
if ($model->status == 3) {
$notification->id_user = 3;//оформление уведомление дизайнеру
$notification->name = 'Новый заказ №'.$model->id_zakaz;
$notification->active = 0;
$notification->save();
} elseif ($model->status == 6) {
$notification->id_user = 6;//оформление уведомление мастеру
$notification->name = 'Новый заказ №'.$model->id_zakaz;
$notification->active = 0;
$notification->save();
}
return $this->redirect(['view', 'id' => $model->id_zakaz]);
}
// Здесь ищем те уведомления которые нам нужны и присваиваем их в параметр вьюшки
$this->view->params['notification'] = Notification::find()->all();
return $this->render('view', [
'model' => $this->findModel($id),
'user_name' => $user_name,
'shipping' => $shipping,
'file' => $file,
]);
}
}
То есть страница может быть на третьем уровне вложенности. например /about/events/news
И когда мы туда переходим, то запускается модуль news именно по этому адресу.
А его адреса доступа к контроллерам меняются с /news/find-by-tags на /about/events/news/find-by-tags. Причем админ может завтра перенести эту страницу в другое место. Но это не изменит работы модуля, просто изменит адрес обращения к нему.