#php #phalcon #phalcon-routing
#php #phalcon #phalcon-маршрутизация
Вопрос:
Я использую пример приложения INVO отсюда:
https://github.com/phalcon/invo
Я скопировал все файлы и установил базу данных и базовый URL.
Это работает, я могу войти в систему и т.д.
тем не менее, я хотел узнать, как использовать перенаправления, например
Я хотел бы использовать contact-us
вместо contact
без изменения имени контроллера.
Итак, я создал файл routes.php внутри папки app / config и поместите это внутрь:
<?php
$router = new PhalconMvcRouter(false);
$router->add('/contact-us', array(
'controller' => "contact",
'action' => "index"
))->setName('contact');
$router->handle();
return $router;
и я создал это в своем файле начальной загрузки index.php в общедоступном корневом каталоге
$di = new PhalconDIFactoryDefault();
$di->set('router', function(){
require __DIR__.'/../app/config/routes.php';
return $router;
});
Однако это не работает, и когда я пытаюсь получить доступ, http://localhost/test/contact-us
это работает, но http://localhost/test/contact-us
перестало работать, и я перенаправлен на домашнюю страницу.
Если я (прокомментирую маршрут) сделаю это:
/*$router->add('/contact-us', array(
'controller' => "contact",
'action' => "index"
))->setName('contact');*/
$router->handle();
return $router;
Ни http://localhost/test/contact-us
, ни http://localhost/test/contact-us
не работает;(.
Если я раскомментирую его обратно. contact-us
работает, но contact
нет.
Я предполагаю, что это b / c of ->setName('contact')
и оно хранится в памяти или в каком-то файле.
как вернуть его в исходное состояние и «отменить» его?
Ответ №1:
Вы можете создать два маршрута, и каждый из них будет работать:
$router->add('/contact', array(
'controller' => "contact",
'action' => "index"
));
$router->add('/contact-us', array(
'controller' => "contact",
'action' => "index"
));
Или использовать группы маршрутов.
Итак, если у вас есть ContactController и вы не хотите получать к нему доступ с помощью url /contact, вам следует добавить маршрутизатор в контейнер DI. После этого страницы будут доступны только через маршрутизатор, а формат запроса по умолчанию / controller / action работать не будет.