Изучаю yii2 и планирую переводить старый "проект" на рельсы ооп и фреймворка. Проект - пользовательская "база данных". Это регистрация клиентов, их обращений и заказов, внесение результатов и т.п. Крутится на локальном сервере и пользователей 10-15 человек.
Если взять, например, страницу регистрации, то она преставляет из себя несколько форм и множество разных пунктов меню\кнопок. И всё это работает без перезагрузки страницы. Всего 5 форм и около 20-25 ajax возможных действий. И тут возникает вопрос.
Допустим, что всё это выводится контроллером SiteController
. Под все таблицы базы данных созданы соответствующие модели, установлены связи между ними. Вьюха тоже есть. Так вот. Получается, что все эти ajax и формы нужно принимать и обрабатывать одним контроллером SiteController
в действии actionIndex
? Или это как-то разносится на какие-то части и т.п.?
В хорошо организованных приложениях контроллеры обычно очень тонкие и содержат лишь несколько строк кода. Если ваш контроллер слишком сложный, то обычно это означает, что вам надо провести его рефакторинг и перенести часть кода в другие места [исчточник].
Вопрос, собственно, в этом и заключается - при большом количестве форм и ajax на странице, где и как всё это обрабатывать? И вообще как быть, что посоветуете? Направьте, пожалуйста.
Upd Тут, наверное, вопрос больше касается структуры приложения. У меня база данных реляционная больше 40 таблиц. Понятно, что под каждую таблицы нужно будет создать модели, описать связи и т.п. Но.... В самом приложении у меня по сути 3 страницы основные - регистрация, внесение результатов и поиск. Если брать страницу "Регистрация", то там, как я уже писал, несколько форм и много разныx ajax. Например, форма регистрации нового клиента и полный CRUD аяксом для этой формы. Потом на той же странице форма для регистрации обращений этого клиента и т.д. По сути страница одна - registration. Получается, что и контроллер один - RegistratonController
. А внутри множество экшенов: actionAddClient
, actionUpdateClient
, actionDeleteClient
, actionLoadClient
, actionAddHandling
и т.п. Аяксом я обращаюсь к нужному экшену, где произвожу действия, использую модель и др.
На странице поиска (это уже контроллер SearchController
) выполняются строго заданные запросы - например, сколько клиентов без того-то и того-то и информация о них. И там тоже свои action. Но по сути-то это дублирование кода - если я на странице регистрации получаю информацию о клиентах и вывожу их в одном виде, а на странице поиска я также получаю информацию о клиентах, но уже немного в другом виде и с некоторым дополнительным условием... Словом, как тут быть? И верно ли я всё понимаю?
Возможно я не совсем корректно понял, но. Если у вас есть по сути повторяющиеся методы в контроллерах (экшены) и все работает с таблицами пользователей, при этом поиск работает с фильтрами на существующие таблицы пользователей, то отдельные контроллеры создавать не нужно. Вам попросту необходимо добавлять фильтр через ORM для реализации поиска. И любые CRUD операции работающие как с общими данными так и с фильтрованными поиском данными будут применяться на соответствующие данные пришедшие из дата-провайдера. А уже содержимое дата-провайдера зависит от контекста (поиск или любой другой результат). Резюмируя: Если источник данных один, то нет необходимости изобретать кучу контроллеров. Есть необходимость исключительно в гибкой реализации обработки некоторых методов, но отнюдь не новых контроллеров. Основываться на принципе: источник данных один - контроллер один. Под источником данных я имею ввиду некий объект системы, что представляет собой одну или несколько связанных моделей необходимых для реализации процесса.
Делайте несколько action
в контроллере site
. Затем, используя Yii-2 Pjax, строите сайт как обычно, но из-за использования Pjax
создастся иллюзия, как будто страница сайта не перезагружается, но при этом будет несколько независимых action
в контроллере. Думаю это как раз то что Вам нужно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
пытаюсь отправить сообщения с сервера Ubuntu nginx через sendmail выдает вот такую ошибку
Я новичок в wordpress да и в php тожея создал свой post type, и теперь хочу сделать свою форму для добавления записи
Передаю get параметры, но при получении сталкиваюсь с проблемой - $_GET пустой, var_dump показывает NULL, ума не приложу как так получаетсяПри том, что...