[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Altorouter проблемы с match() пути
Constantinich
Здравствуйте, форумчане

Прошу помощи разобраться почему не работает AltoRouter

Я создал пустой проект, подключил Altorouter.
Создал первый путь, но его не видит match()

Код .htaccess:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php?url=$1 [L]


Код index.php
require '../vendor/autoload.php';

$router = new AltoRouter();
$router->setBasePath('../app/Controller/');

/**
* Перечисляем все пути
*/


$router->map( 'GET', '/', 'HomeController#home', 'home' );

/**
* Все пути перечислены
*/


$match = $router->match();

var_dump($match['target']);

echo '<br/>';

echo ' This is index!';


В результате, $match['target'] не существует (NULL)
user posted image

Структура папок следующая:
user posted image
Ron
Цитата (Constantinich @ 2.07.2017 - 19:04)
$router->setBasePath('../app/Controller/');

Смысл этой строки совсем не тот, что ты думаешь. Убери ее вообще, должно заработать, если больше нигде косяков нет (вроде нет).
Цитата
Optionally, if your project lives in a sub-folder of your web root you use the setBasePath() method to set a base path.

Понял? =)

Цитата (Constantinich @ 2.07.2017 - 19:04)
HomeController#home

Это вот не вызов контроллера и метода, а просто строка. Altoruter не сервит ничего, тебе нужно самому писать диспетчер для вызова. Поддерживается лишь примитивная схема на колбэках, которой недостаточно для нормального проекта.

Кстати, так дерево папок не строится, точнее сервер натравливают на public, там же тусит и .htaccess Поскольку PHP имеет доступ ко всей файловой системе, есть возможность запросто подключить что угодно вне видимости севрера. Так значительно безопаснее, серверу совершенно не обязательно иметь доступ к контроллерам, шаблонам и всему остальному, что не расчитано на прямой вызов.
Constantinich
Ron, спасибо!

Убрал строку, заработало.
Цитата (Ron)
Altoruter не сервит ничего, тебе нужно самому писать диспетчер для вызова.
Это я понимаю. Match должен был вернуть array, который не возвращался, чтобы я написал диспетчер.

Цитата (Ron)
Поддерживается лишь примитивная схема на колбэках, которой недостаточно для нормального проекта.
А какой роутер лучше ковырять?

P.S. Структуру переделаю. Спасибо
Ron
Цитата (Constantinich @ 2.07.2017 - 20:46)
А какой роутер лучше ковырять?

Да не, роутер вполне годный, если написать хороший диспетчер, то никаких проблем. Можно еще этот посмотреть nikic/fast-route, но по-моему те же коконьки. Только в нем диспетчером называет несколько не то, что обычно подразумевается. Я бы остановился на Alto, он и попроще и по возможностям если уступает, то совсем немного.

Просто без диспетчера из коробки Alto поддерживает только колбэки, вот что я имел ввиду. Если этого достаточно, то можно посмотреть в сторону фреймворка Slim, он тоже на колбэках основан. Для совсем небольших проектов неплохо, даже удобно. Или разработки API, собственно говоря, автор, Josh Lockhart, его так и позиционирует.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.