无法取消Phalcon别名

时间:2014-07-04 15:36:33

标签: php phalcon phalcon-routing

我在这里使用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-ushttp://localhost/test/contact-us都不起作用;(。

如果我退回去。 contact-us有效,但contact没有。

我猜它是->setName('contact')的b / c,它存储在内存或某个文件中。

如何让它恢复到原始状态并“取消设置”?

1 个答案:

答案 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容器中。之后,页面将仅通过路由器可用,默认/控制器/操作请求格式将不起作用。