@deepin

Можно ли так обработать POST запрос?

Такой вот код

<?php


namespace app\controllers;


use app\models\Units;

class UnitsController extends AppController
{
    protected $unit;

    public function __construct($route)
    {
        parent::__construct($route);
        $this->model = new Units();
        $this->setSite('Техника');

        # Прописал этот код сюда
        if (isset($_POST['buy'])) {
            $this->unit = $this->model->getOneUnit($this->user->id, $_POST['buy']);
            $this->buyUnit();
        }
        if (isset($_POST['sell'])) {
            $this->unit = $this->model->getOneUnit($this->user->id, $_POST['sell']);
            $this->sellUnit();
        }

    }

    public function indexAction()
    {
        $site = $this->site;
        $user = $this->user;
        $data_units = $this->model->getAllUnits($this->user->id, 'ground');
        $next_unit = $this->model->getNextUnit($this->user->lvl, 'ground');
        $this->set(compact('site', 'user', 'data_units', 'next_unit'));

        # Чтобы сюда не прописывать

    }

    public function marineAction()
    {
        $site = $this->site;
        $user = $this->user;
        $data_units = $this->model->getAllUnits($this->user->id, 'marine');
        $next_unit = $this->model->getNextUnit($this->user->lvl, 'marine');
        $this->set(compact('site', 'user', 'data_units', 'next_unit'));

        # Чтобы сюда не прописывать

    }

    public function airAction()
    {
        $site = $this->site;
        $user = $this->user;
        $data_units = $this->model->getAllUnits($this->user->id, 'air');
        $next_unit = $this->model->getNextUnit($this->user->lvl, 'air');
        $this->set(compact('site', 'user', 'data_units', 'next_unit'));

        # Чтобы сюда не прописывать

    }
    
    # далее методы buyUnit() и sellUnit();
}


можно ли таким образом выносить обработку POST запросов в конструктор?
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
@MikUrrey
Можно, но не нужно.
Правильнее было бы сделать некий метод (initUnit, например), который бы добавлялся в каждый экшн.
Обратите внимание, конструктор выполнится ДО вызова экшнов, а метка # Чтобы сюда не прописывать стоит у вас в конце экшна. Уже как минимум на этом моменте возникают вопросы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
DANYCOM Краснодар
от 50 000 до 100 000 ₽
Директ Кредит Казань
от 70 000 до 120 000 ₽
03 апр. 2020, в 19:50
20000 руб./за проект
03 апр. 2020, в 19:01
500 руб./за проект
03 апр. 2020, в 18:13
5000 руб./за проект