0

我在这里使用 INVO 示例应用程序:

https://github.com/phalcon/invo

我已经复制了所有文件并设置了数据库和基本 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;

我在公共根目录的引导文件 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没有。

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

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

4

1 回答 1

0

您可以创建两条路线,每条路线都可以:

$router->add('/contact', array(
    'controller' => "contact",
    'action'     => "index"
));

$router->add('/contact-us', array(
    'controller' => "contact",
    'action'     => "index"
));

或者使用路由组

因此,如果您有 ContactController 并且不想使用 /contact url 访问它,您应该将路由器添加到 DI 容器。之后页面将只能通过路由器使用,默认的 /controller/action 请求格式将不起作用。

于 2014-07-04T15:59:10.787 回答