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

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

Войти через центр авторизации
Похожие вопросы
от 55 000 до 80 000 руб.
от 150 000 до 180 000 руб.
X-Cart Ульяновск
от 80 000 до 150 000 руб.
24 авг. 2019, в 21:24
300 руб./за проект
24 авг. 2019, в 20:50
780 руб./в час
24 авг. 2019, в 19:17
5000 руб./за проект