调用其方法时隐藏控制器名称

时间:2013-10-18 10:44:19

标签: cakephp cakephp-2.0

我正在使用CakePHP创建一个网站。 它有用户注册和登录系统。

首先,我有controller名为HomeController,其中有三种方法

1)index();

2)login();

3)register();

默认情况下index()方法将执行。

我有以下代码来调用其他两种方法。

<? php

echo $this->Html->link('Login',array('controller'=>'Home','action'=>'login'),array('escape'=>FALSE));

echo $this->Html->link('Register',array('controller'=>'Home','action'=>'register'),array('escape'=>FALSE));

?>

所以,现在当我点击上面的链接(loginregister)时,它会调用适当的方法,而url将类似于

www.example.com/home/loginwww.example.com/home/register

现在我想从网址中删除控制器名称,因为该方法位于同一个控制器中。

所以url应该是

www.example.com/loginwww.example.com/register

有可能吗? 请帮忙..

2 个答案:

答案 0 :(得分:5)

在app \ Config \ routes.php中添加以下行

Router::connect('/login', array('controller' => 'home', 'action' => 'login'));
Router::connect('/register', array('controller' => 'home', 'action' => 'register'));

它会将默认网址转换为您想要的网址

www.example.com/login and www.example.com/register

答案 1 :(得分:1)

Router::parseExtensions('json'); 
Router::connect('/*', array('controller' => 'home', 
                                'action' => 'login'));

Router::connect('/login', array('controller' => 'home', 
                                    'action' => 'login'));