我在这里使用INVO示例应用程序:
https://github.com/phalcon/invo
我复制了所有文件并设置了db和base url。
它可以,我可以登录等。
但是,我想学习如何使用重定向,例如
我想在不更改控制器名称的情况下使用contact-us
代替contact
。
因此,我在app / config文件夹中创建了一个文件routes.php并将其放入:
<?php
$router = new Phalcon\Mvc\Router(false);
$router->add('/contact-us', array(
'controller' => "contact",
'action' => "index"
))->setName('contact');
$router->handle();
return $router;
我在公共根目录
中的bootstrap文件index.php中创建了这个$di = new \Phalcon\DI\FactoryDefault();
$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
没有。
我猜它是->setName('contact')
的b / c,它存储在内存或某个文件中。
如何让它恢复到原始状态并“取消设置”?
答案 0 :(得分:0)
您可以创建两条路线,每条路线都可以使用:
$router->add('/contact', array(
'controller' => "contact",
'action' => "index"
));
$router->add('/contact-us', array(
'controller' => "contact",
'action' => "index"
));
或使用groups of routes。
因此,如果你有ContactController并且不想使用/ contact url访问它,你应该将路由器添加到DI容器中。之后,页面将仅通过路由器可用,默认/控制器/操作请求格式将不起作用。