我可以隐藏控制器和查看名称蛋糕PHP 2?

时间:2015-07-13 10:18:52

标签: php cakephp routing cakephp-2.0

我正在使用cake php,由于某些原因我想隐藏控制器和动作名称。目前我们喜欢

http://192.168.1.31/home/this_is_test

其中home是控制器名称,this_is_test是动态的slug。我想要像

这样的网址

http://192.168.1.31/this_is_test

我的routes.php是

Router::connect('/', array('controller' => 'home', 'action' => 'index'));
Router::connect('/dashboard', array('controller' => 'dashboard', 'action' => 'index'));
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
Router::connect('/admin/login', array('controller' => 'users', 'action' => 'login', 'admin' => true));
Router::connect('/contents/*', array('controller' => 'contents', 'action' => 'view'));
Router::connect('/home/*', array('controller' => 'Home', 'action' => 'index'));

我在google搜索后阅读了几个解决方案。也试过在routes.php中。但没有运气

Router::connect(
    '/:query',
   array('controller' => 'Home', 'action' => 'index',1),
    array('query' => '[a-zA-Z]+')
);

如果有可能,任何人都有这个想法吗?

1 个答案:

答案 0 :(得分:1)

您的解决方案

对于静态文本,请尝试:

Router::connect('/this_is_test', array(
      'controller' => 'home', 
      'action' => 'this_is_test OR any_other action name'
));

如果它是动态的

Router::connect('/:id', 
    array('controller' => 'home', 'action' => 'index'),
    array(
        'pass' => array('id'),
        array('id' => '[A-Za-z]')
    )
);

References: Cakephp2.x Route

我希望我知道你真正想要实现的目标。您可以将路线放在最后位置。 Here is the reference

其他选项是为控制器使用别名。所以你打电话给你的控制器,然后为你的控制器设置一个新名称,然后在你的路线中调用它。

如果这不起作用,那么你需要编写一个定制的组件来帮助你做到这一点。