【问题标题】:Unable to unset Phalcon aliases无法取消设置 Phalcon 别名
【发布时间】:2014-07-04 15:36:33
【问题描述】:

我正在使用这里的 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;

我已经在公共根目录的引导文件 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 无效。

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

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

【问题讨论】:

    标签: php phalcon phalcon-routing


    【解决方案1】:

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

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

    或使用groups of routes

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

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 2016-06-10
      • 2022-01-27
      • 2018-06-12
      • 2015-10-27
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多