@survivor2005

Куда отправлять данные из формы?

Добрый день, начал потихоньку изучать ООП, MVC. Вроде на простых примерах все более - менее понятно. Кода тупо 1 или 2 файла. Но вот кода что - то серьезное начинаешь делать, возникает масса вопросов.
Как я понял все запросы от клиента должны сначала попадать в главный роутинг (фронт контроллер). То бишь корневой index.php. Далее роутинг должен вызывать соответствующий контроллер для обработки запроса. Так вот есть формы, к примеру добавить товар в корзину, или отправка данных на почтовый сервер ит д. Форма должна куда послать данные? Раньше я тупо писал обработчик и в форме указывал путь до обработчика. Обработчик принимал запрос, обрабатывал и отправлял ответ. И писал я на каждую задачу отдельный файл обработчик и знал какие данные должны куда прийти и что с ними делать. А сейчас как я могу понять в главном контроллере какие мне данные и откуда поступят, если я в каждой форме указываю на обработчик index.php. Я не знаю как их там различать. Может я не так понял все? Подскажите цепочку плз!
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 4
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Доп.поле в POST-данных формы.
Например, тип поля: hidden.
Или добавить перед отправкой js-обработчиком.
Здесь более подробно.
Ответ написан
@galaxy
А сейчас как я могу понять в главном контроллере какие мне данные и откуда поступят, если я в каждой форме указываю на обработчик index.php.

Так не указывай.

Вообще-то в MVC такими вещами (маппинг url -> controller) занимается роутер. Можешь самый дубовый роутер сделать, который видя урл /index.php?controller=post&action=create будет вызывать метод create() контроллера, отвечающего за посты
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
сначала попадать в главный роутинг (фронт контроллер). То бишь корневой index.php.

`index.php` подобные файлы называются точками входа или гейтами

Концепция MVC для чайников
Ответ написан
Комментировать
@survivor2005 Автор вопроса
Спасибо за ответы, все получилось, скрытые формы с атрибутами оказались не нужны, просто указываем в форме в атрибуте action название обработчика например action="/cart" и в точке входа отлавливается по пути и передается управление
<?php
                //присвой массив строк в адресной строке разделенные "/";
                $parts = $controller->getDataURI(); 

                //присвой первую строку из адресной строки после символа "/" если существует иначе дай строку Index;
                $ctrl = $parts[1] ?: 'Index'; 

                //присвой Класс контроллера отвечающий за переданную строку;
                $class = 'Classes\Controllers\\' . ucfirst($ctrl); 

                //инициализация класса контроллера
                $ctrl = new $class;

                //вызов метода __invoke у вызванного контроллера
                $ctrl();
                ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы