替换CakePHP URL中的ID


Replace ID from CakePHP URL

如何将/posts/view/id替换为/posts/view/代码

代码是数据库中的一个字段,包含使用mtrand()函数生成的10个随机数。

在PostsController中,我有查看帖子的功能:

public function view($id = null) {
    $this->Post->id = $id;
    $this->set('post', $this->Post->read());
}

现在我想使用code而不是id

谢谢你的回答!

更新::

CakePHP Q&A解决了我的问题。

我会把代码放在这里,这样如果有人需要同样的解决方案,可以在这里找到。

在routes.php中添加以下代码:

Router::connect('/posts/view/:code', array('controller' => 'news', 'action' => 'view'), array('pass' => array('code')));

在控制器中更改视图方法,如下所示:

public function view($code = null) {
   $this->set('post', $this->Post->findByCode($code));
}

非常感谢!

我使用了cakeHP

只是几次,但我认为你应该在cakeHP中看到路由,你应该更改url 的重写

我认为这将是一个类似/posts/view/id/code的URL。然后使用ID从数据库中获取代码:

public function view($id = null, $code = null) {
   $this->Post->id = $id;
   //..DO CAKEPHP QUERY TO GET CODE USING ID HERE. ASSIGN TO $code.
   $this->Post->code = $code;
   $this->set('post', $this->Post->read());
}