在cakephp中使用变量时,避免在url中使用'index'

时间:2013-08-31 11:08:56

标签: php cakephp

如果您想要像

这样的链接

http://www.domain.com/users/54/John

在Cakephp中,您必须将其重写为:

http://www.domain.com/users/index/54/John

如果你不这样做,cakephp抱怨在users控制器内没有名为54的行动。没有别的办法吗?想告诉cakephp,当url中的第二个变量是一个数字时(所以在这种情况下为54),将它引用到索引函数:

public function index($userId = null)

另一个例子是这个问题的网址。如果是cakephp,则网址如下:

http://stackoverflow.com/questions/index/18547494/avoid-having..

在cakephp中可以做这样的事吗?

http://stackoverflow.com/questions/18547494/avoid-having..

我希望这是有道理的。

3 个答案:

答案 0 :(得分:1)

Router::connect('/users/:id/:name', array(
    'controller' => 'users',
    'action' => 'index'
), array('pass' => array('id', 'name')));

您的控制器操作代码应如下所示:

public function index($id = null, $name = null) {
    // your code
}

在您的视图中,您可以按如下方式定义链接​​以访问网址

echo $this->Html->link('view', array(
    'controller'  => 'users',
    'action' => 'index'
    'id' => $yourid,
    'name' => $yourname
))

答案 1 :(得分:0)

创建链接时,您需要在路由数组中使用id键。像这样:

array(
    'controller'=>'users', 'action'=>'index', 'id' => 54
}

答案 2 :(得分:0)

你应该有这个:

Router::connect(
   '/:controller/:id',
   array('action' => 'view'),
   array('id' => '[0-9]+')
);

阅读:Routing in CakePHP