.htaccess — модель MVC Php — почему контекст (путь) изменяется в том же контроллере / представлении, когда стандартный параметр home заменяется тем же в: url [1]

Я хотел бы принять в моем проекте PHP модель MVC. Я создал структуру папок: модели, виды, контроллеры и т.д …

Проблема, с которой я сталкиваюсь:

если я перехожу к: «www.mysite.com/home» (обратите внимание, что метод index вызывается по умолчанию), сайт загружает ресурсы (/ css, / img и т. д.) очень хорошо.

НО, если я назову: «www.mysite.com/home/index» (то же самое, что и значение по умолчанию), мои ресурсы не загружаются (то есть: он ищет css в: home / index / css, который не существует) … 🙁

Я переписал правила внутри .htaccess, так что все должно быть включено в мой /index.php, верно? Чем меняется путь к моим ресурсам?

Шаги, которые я делаю в своем приложении:

В моем ядре App.php объявляют:

protected $controller = 'home';
protected $method = 'index';
protected $params = [];

по умолчанию эти страницы открываются через:

public function __construct(){
$url = $this->parseUrl();

if(file_exists('app/controllers/' . $url[0] . '.php')){
$this->controller = $url[0];
unset($url[0]); //remove it from the array
}

require_once 'app/controllers/' . $this->controller . '.php';
$this->controller = new $this->controller;if(isset($url[1])){
if(method_exists($this->controller, $url[1])){
$this->method = $url[1];
unset($url[1]);
}
}$this->params = $url ? array_values($url) : [];
call_user_func_array([$this->controller, $this->method], $this->params);
}public function parseUrl(){
if(isset($_GET['url'])){
return $url = explode('/', filter_var(rtrim($_GET['url'], '/'), FILTER_SANITIZE_URL));
}
}

Затем вызывается контроллер home.php, который выбирает правильный файл index.php, расширяя основной контроллер:

class Home extends Controller {

public function index($name = ''){

//$user = $this->model('User');
//$user->name = $name;

$this->view('home/index', []);
}

}

controller.php

class Controller {

public function model($model){
require_once 'app/models/' . $model . '.php';
return new $model();
}public function view($view, $data = []){
require_once 'app/views/' . $view . '.php';
}

.Htaccess:

Options -MultiViews
RewriteEngine On

RewriteBase /home/prbh0pr/public_html/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

структура папок:
введите описание изображения здесь

1

Решение

если вы находитесь в контроллере, вам нужен файл css / js, например, если вы находитесь в yourweb.com/public/home

<script type="text/javascript" src="js/md/tinymce.min.js"></script>

если дома / индекс

 <script type="text/javascript" src="../js/md/tinymce.min.js"></script>
0

Другие решения

Других решений пока нет …