Ответов: 2 Просмотров: 1588
|
Здравствуйте, не могу понять как сделать AJAX используя патерн MVC! Код моего Route.php:
PHP:
скопировать код в буфер обмена
<?PHP /** * Класс Router * Компонент для работы с маршрутами */ class Router { /** * Свойство для хранения массива роутов * @var array */ private $routes; /** * Конструктор */ public function __construct() { // Путь к файлу с роутами $routesPath = ROOT . '/config/routes.php'; // Получаем роуты из файла $this->routes = include($routesPath); } /** * Возвращает строку запроса */ private function getURI() { if (!empty($_SERVER['REQUEST_URI'])) { return trim($_SERVER['REQUEST_URI'], '/'); } } /** * Метод для обработки запроса */ public function run() { // Получаем строку запроса $uri = $this->getURI(); // Проверяем наличие такого запроса в массиве маршрутов (routes.php) foreach ($this->routes as $uriPattern => $path) { // Сравниваем $uriPattern и $uri // Получаем внутренний путь из внешнего согласно правилу. $internalRoute = preg_replace("~$uriPattern~", $path, $uri); // Определить контроллер, action, параметры $segments = explode('/', $internalRoute); $controllerName = array_shift($segments) . 'Controller'; $controllerName = ucfirst($controllerName); // Подключить файл класса-контроллера $controllerFile = ROOT . '/controllers/' . $controllerName . '.php'; include_once($controllerFile); } // Создать объект, вызвать метод (т.е. action) $controllerObject = new $controllerName; /* Вызываем необходимый метод ($actionName) у определенного * класса ($controllerObject) с заданными ($parameters) параметрами */ // Если метод контроллера успешно вызван, завершаем работу роутера if ($result != null) { break; } } } } }
Вот мои роуты все:
PHP:
скопировать код в буфер обмена
<?PHP '^/*$' => 'home/index', 'login' => 'user/login', 'register' => 'user/register', 'account' => 'account/index', 'logout' => 'user/logout', 'support' => 'support/index', 'feed/article/([0-9]+)' => 'feed/article/$1', 'feed' => 'feed/index', 'feed/([0-9]+)' => 'feed/index/$1', //pagination 'cars-select/([0-9]+)' => 'cars/index/$1', 'cars-select/cars/([0-9]+)' => 'cars/cars/$1', 'cars-select/([a-z]+)' => 'cars/marks/$1', 'cars-select' => 'cars/index', 'market' => 'market/index', 'admin/users' => 'admin/users', 'admin/feed/edit' => 'admin/feed', 'admin/cars/edit' => 'admin/cars', 'admin' => 'admin/index' //'news/([0-9]+)' => 'news/view/$1' );
Вот мой AJAX Запрос:
CODE ( javascript):
скопировать код в буфер обмена
var select = document.querySelector('.type_cars'); select.addEventListener('change', (event) => { event.preventDefault() $.ajax({ type: "POST", url: "/admin/cars/edit", dataType: 'text', data: {type_cars: select.value}, success: function(data){ alert(data) }, error: function (r) { alert("Ошибка ajax"); } }); })
Вот собственно как можно отправить AJAX НА контроллер и как его обратно отдать на фронтенд(JS)
Помогите пжжж, очень срочно нужно! |