Здравствуйте , начал недавно изучать ООП и паттерн MVC и появилось несколько вопросов .
Когда писал прошлый проект использовал функциональный подход + ajax , чтобы передавать данные без перезагрузки страницы , но когда начал знакомиться с ООП и MVC столкнулся с непониманием , нужно ли этот ajax вообще и как передавать данные между ajaxom и классами пхп .
Структура проекта
app
--controllers
---Controller.php
---UsersController.php
--models
---UsersModel.php
--Services
---Router.php
--VIews
---View.php
assets
--js
router
--router.php
vendor
--autoload.php
views
--pages
index.php
У меня есть роутинг , который считывает что я ввел после index/ ...
RewriteRule ^(.+)$ index.php?q=$1 [L,QSA]
далее я регистрирую роуты routes.php
Router::page("/home",'home',\app\controllers\homeController::class,"action");
Router::page("/register",'register',\app\controllers\UsersController::class,"index_register");
Router::page("/login",'login',\app\controllers\UsersController::class,"index_login");
Router::page("/",'home',\app\controllers\homeController::class,"action");
Router::post("/register/auth",\app\controllers\UsersController::class,"signUP"); //форма регистрации ведет по этому пути , и как я перехожу запускается уже метод signUP класса UsersController.
Router::start();
Последней строкой я запускаю метод который смотрит что у меня в адресной строке , сравнивает с роутами которые я прописал ранее и вызывает соответственный экшен .
UsersController.php
namespace app\controllers;
use app\Models\Users\UsersModel;
class UsersController extends Controller
{
public function index_register()
{
$this->view->generate("register.php");
}
public function signUP()
{
$Model = new UsersModel();
$res = $Model->sign($_POST,$_FILES);
}
И вот как мне прикрутить тут ajax , я не понимаю как их связать вместе , какой указывать URL , как его подхватить ?
У меня получалось что-то вроде
$('#register').on('click',function (event)
{
event.preventDefault();
const fd = new FormData(document.getElementById("FormReg"));
// let avatar = document.getElementById("avatar")
let email = $('#email').val();
let username = $('#username').val();
let password = $('#password').val();
let pass_conf = $('#pass_conf').val();
fd.append('email',email);
fd.append('username',username);
fd.append('password',password);
fd.append('pass_conf',pass_conf);
$.ajax
({
method: "POST",
processData: false,
contentType: false,
url: "", // куда:(
data: fd
})
.done(function( msg )
{
console.log(msg);
});
})
Буду очень благодарен если объясните нужно ли выключать эту перезагрузку страницы когда я отправляю форму и как передать (куда) передать данные с ajaxa :)