@maximka787
Кодер

В чем отличие контроллера от экшена?

Ребят, объясните один раз пожалуйста. Чем они отличаются?На примере конкретного сайта.
Вот есть сайт, в нем две страницы. На одной управление пользователями /users/. Вторая - таблицей товаров /products/.
Всё, больше ничего на сайте нет. Внутренняя система.
Верно ли я понимаю, что тут используются только экшены?
Вопрос про MVC.
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Экшены это методы контроллера.
Ответ написан
SerafimArts
@SerafimArts
Кратко о себе
Немного о наболевшем:

В MVC нет экшенов. MVC работает следующим образом:
- Во вьюхе располагается модель (например "текстовое поле")
- Любые изменения в модели сразу же изменяют вью (изменяем текст в текстовом поле и этот текст визуализируется/рендерится)
- Контроллер подписывается на события вьюхи (например "изменение текста в текстовом поле") и выполняет какое-либо действие, в том числе изменяет модели (ну хз, например проверяет что длина не более 10 символов. Или другой пример. Контроллер подписывается на событие нажатия кнопки "delete" и удаляет текст из модели текстового поля, а модель сразу же перерисовывается, т.к. напрямую связана с представлением).

MVC-Process.png

Всё это прекрасно видно на картинке, которая взята с вики: https://ru.wikipedia.org/wiki/Model-View-Controller

В вебе реализация MVC без сокетов не возможна физически (который, к слову, в районе 80х-90х годов назывался MVCE: Model-View-Controller-Editor, не суть). Большинство существующих решений - это вариации MVP (Laravel/Symfony/etc) с небольшими нюансами. Контроллер там называются контроллерами, а не презентером по принципу GRASP и никак не связан с MVC.

НО. Есть такая штука как коллективное мнение. Например, по правилам русского языка можно писать "парашут", а не "парашют" начиная с какого-то там 2010го года. Это теперь норма. Хз. Короче безграмотных неучей дохрена. И т.к. таких реально дохрена, кто не может отличить одно от другого и не быть неучем, то решили что назовём-ка мы это дело "MVC с пассивными моделями", потому что называть этот подход MVP слишком сложно, это же читать надо ещё, учиться, лучше будем терминами кидаться, подумают что умный.

Так вот, к чему я веду. Классический MVP в вебе неудобен (что можно увидеть на примерах первого Zend, Phalcon и прочих догматов), по-этому добавили прослойку в виде роутера, который говорит: "По адресу /users при GET запросе отправляйся мне вот в этот класс и выполни вот этот метод", например: "$router->get('/users', 'UserClass', 'action')". Сам метод, возвращает нужную вьюшку с данными и называется "экшен", а класс, который содержит набор этих самых "экшенов" называется "контроллер" или "презентер". Во вьюшке, с помощью читов (шаблонизатора) можно указать, например, какой хедер\футер (лайаут) использовать, какой тайтл и прочее. Таким образом мы получаем разные страницы по разным адресам с разными данными, с возможностью сохранить основное оформление и пересипользовать какие-то другие куски вьюшек.
Ответ написан
kruslan
@kruslan
Воспринимайте следующим образом (дано для упрощения понимания):
1. Controller - область работы одной сущности (например, для работы с пользователями создается контроллер Users).
2. Action - определенное действие над сущностью. Показать, редактировать, удалить, переместить, etc (например, в контроллер из п1 добавляется action-ы Show = показать и Edit = форма редактирования).
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
ООО "МПК" Москва
от 100 000 руб.
Duotek Москва
До 120 000 руб.
HTML Academy Санкт-Петербург
от 120 000 до 130 000 руб.
20 авг. 2018, в 21:21
30000 руб./за проект
20 авг. 2018, в 20:46
5000 руб./за проект
20 авг. 2018, в 20:38
700 руб./в час