php - 如何防止 Controller 和操作出现在 cakephp 的 URL 中?

标签 php routing cakephp-1.2

我有一条看起来像这样的路线:

Router::connect('/Album/:slug/:id',array('controller' => 'albums', 'action' =>    'photo'),array('pass' => array('slug','id'),'id' => '[0-9]+'));

还有一个是这样的:

Router::connect('/Album/:slug/*',array('controller' => 'albums','action' => 'contents'),array('pass' => array('slug')));

对于第一个不匹配的。在“相册” Controller 的“内容”操作中,我自己负责分页——这意味着我检索命名参数“页面”。 第二条路线的 URL 如下所示: http://somesite.com/Album/foo-bar/page:2

上面的 URL 确实有效,但是当我尝试使用 HTML Helper (url,link) 输出这样的 url 时,它会将 Controller 和操作附加到开头,如下所示: http://somesite.com/albums/contents/Album/foo-bar/page:2

我不喜欢。 使用 HtmlHelper 的代码如下:

$html->url(array('/Album/' . $album['Album']['slug'] . '/page:' . $next))

最佳答案

看下面的网址对你很有帮助

http://book.cakephp.org/2.0/en/development/routing.html

或者阅读它

将参数传递给操作

当使用 Route 元素连接路由时,您可能希望将路由元素传递给参数。通过使用 Router::connect() 的第三个参数,您可以定义哪些路由元素也应该作为传递参数可用:

<?php
// SomeController.php
public function view($articleId = null, $slug = null) {
    // some code here...
}

// routes.php
Router::connect(
    '/blog/:id-:slug', // E.g. /blog/3-CakePHP_Rocks
    array('controller' => 'blog', 'action' => 'view'),
    array(
        // order matters since this will simply map ":id" to $articleId in your action
        'pass' => array('id', 'slug'),
        'id' => '[0-9]+'
    )
);

现在,由于反向路由功能,您可以像下面这样传入 url 数组,Cake 将知道如何形成路由中定义的 URL:

// view.ctp
// this will return a link to /blog/3-CakePHP_Rocks
<?php
echo $this->Html->link('CakePHP Rocks', array(
    'controller' => 'blog',
    'action' => 'view',
    'id' => 3,
    'slug' => 'CakePHP_Rocks'
));

关于php - 如何防止 Controller 和操作出现在 cakephp 的 URL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363931/

相关文章:

php - SQL 查询 'past games'

php - 如何使用 Laravel 一键发送两封不同的电子邮件

php - 如何在 WordPress MySQL 查询中按元键值排序?

php - 使用 CakePHP 更改默认登录设置

forms - 将 $html->tagErrorMsg 从 CakePhp 1.1 更新到 1.2

php - 未明确取消设置时过多的对象内存使用

javascript - 如何 router.navigate 到 Angular 4 中的相同路线并捕获相同的事件?

angular - 绑定(bind)到 routerlink 指令的 div 边框?

不同用户的 Angular 路由 View

php - CakePHP Auth 组件重定向问题