Как использовать AJAX в MVC петерне?

Начинающий
Статус
Оффлайн
Регистрация
26 Фев 2019
Сообщения
21
Реакции[?]
0
Поинты[?]
0
Здравствуйте, не могу понять как сделать 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
            if (preg_match("~$uriPattern~", $uri)) {

                // Получаем внутренний путь из внешнего согласно правилу.
                $internalRoute = preg_replace("~$uriPattern~", $path, $uri);

                // Определить контроллер, action, параметры

                $segments = explode('/', $internalRoute);
                $controllerName = array_shift($segments) . 'Controller';
                $controllerName = ucfirst($controllerName);

                $actionName = 'action' . ucfirst(array_shift($segments));

                $parameters = array_values(array_merge($segments, $_POST));

                // Подключить файл класса-контроллера
                $controllerFile = ROOT . '/controllers/' .
                    $controllerName . '.php';

                if (file_exists($controllerFile)) {
                    include_once($controllerFile);
                }

                // Создать объект, вызвать метод (т.е. action)
                $controllerObject = new $controllerName;

                /* Вызываем необходимый метод ($actionName) у определенного
                 * класса ($controllerObject) с заданными ($parameters) параметрами
                 */
                $result = call_user_func_array(array($controllerObject, $actionName), $parameters);

                // Если метод контроллера успешно вызван, завершаем работу роутера
                if ($result != null) {
                    break;
                }
            }
        }
    }

}
Вот мои роуты все:
PHP:
<?php
    return array(
        '^/*$' => '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 Запрос:

JavaScript:
var select = document.querySelector('.type_cars');
select.addEventListener('change', (event) => {
    $.ajax({
        url: '',
        method: 'post',
        dataType: 'json',
        data: {text: select},
        success: function(data){
            alert(data);
        }
    });
});

Это сомописный MVC!
Вот структура проекта(Если нужно)
Screenshot_1.png
Вот собствено как можно отправить AJAX НА контроллер и как его обратно отдать на фронтенд(JS)
Помогите пжжж, очень срочно нужно!
 
PHP Dev
Забаненный
Статус
Оффлайн
Регистрация
24 Ноя 2020
Сообщения
81
Реакции[?]
34
Поинты[?]
2K
Товары в продаже
1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
JavaScript:
var select = document.querySelector('.type_cars');
select.addEventListener('change', (event) => {
    $.ajax({
        url: '/feed',
        method: 'post',
        dataType: 'json',
        data: {text: select},
        success: function(data){
            alert(data);
        }
    });
});
PHP:
class FeedController extends BaseController {
    
    public function index($data-post-ajax) {
        $obj = json_decode($data-post-ajax);
        print $obj->{'data'};
    }
}
Небольшой пример
 
Начинающий
Статус
Оффлайн
Регистрация
26 Фев 2019
Сообщения
21
Реакции[?]
0
Поинты[?]
0
JavaScript:
var select = document.querySelector('.type_cars');
select.addEventListener('change', (event) => {
    $.ajax({
        url: '/feed',
        method: 'post',
        dataType: 'json',
        data: {text: select},
        success: function(data){
            alert(data);
        }
    });
});
PHP:
class FeedController extends BaseController {
   
    public function index($data-post-ajax) {
        $obj = json_decode($data-post-ajax);
        print $obj->{'data'};
    }
}
Небольшой пример
Спасибо за ответ! Но объясните что здесь что!
1. Откуда берется наследование класса
2. Зачем это
PHP:
($data-post-ajax)
откуда это, это будет обрабатывать мой Route.php!!!??
 
PHP Dev
Забаненный
Статус
Оффлайн
Регистрация
24 Ноя 2020
Сообщения
81
Реакции[?]
34
Поинты[?]
2K
Товары в продаже
1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо за ответ! Но объясните что здесь что!
1. Откуда берется наследование класса
2. Зачем это
PHP:
($data-post-ajax)
откуда это, это будет обрабатывать мой Route.php!!!??
1) Наследуется базовый контроллер
2) Это не обязательно, все зависит от того как вы сделали свой скрипт, можете просто использовать $_GET['name'] запрос
 
Сверху Снизу