cakephp url修改:删除操作并添加段塞拐点
我试图删除cakephp url中的操作并添加一个slug拐点,更清楚地说,这是我预期的输出:cakephp url修改:删除操作并添加段塞拐点,url,cakephp,controller,routes,action,Url,Cakephp,Controller,Routes,Action,我试图删除cakephp url中的操作并添加一个slug拐点,更清楚地说,这是我预期的输出: 来自:example.com/posts/view/81/这是一篇测试文章 到此:example.com/posts/this-is-a-test-post 这是我当前的代码: 这给了我这个输出:example.com/posts/view/这是一个测试帖子 控制器: public function view($title = null) { if (!$title) {
来自:example.com/posts/view/81/这是一篇测试文章
到此:example.com/posts/this-is-a-test-post 这是我当前的代码:
这给了我这个输出:example.com/posts/view/这是一个测试帖子 控制器:
public function view($title = null) {
if (!$title) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findByTitle($title);
if (!$post) {
throw new NotFoundException(__('Invalid post'));
}
$this->set('post', $post);
}
view.ctp:
$this->Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['title']));
我也试过这个,这个链接是我的参考:输出:example.com/posts/view/21/This-is-a-test-post 控制器:
function view($id) {
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
view.ctp
$this->Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'], Inflector::slug($post['Post']['title'],'-')));
下面是我尝试过但失败的其他链接,我也尝试过修改routes.php,但无法生成正确的代码
非常感谢您的帮助/建议。请使用Id和命名参数 关于routes.php 将新路线定义为-
Router::connect('/posts/:id-:title',
array('controller' => 'posts',
'action' => 'view')
);
此新定义的路由将匹配并解析包含id和标题命名参数的所有url
重要提示::不要在routes.php结束后定义新路由。尝试在文件的中间定义
在望
使用Id和命名参数 关于routes.php 将新路线定义为-
Router::connect('/posts/:id-:title',
array('controller' => 'posts',
'action' => 'view')
);
此新定义的路由将匹配并解析包含id和标题命名参数的所有url
重要提示::不要在routes.php结束后定义新路由。尝试在文件的中间定义
在望
好的,上面提供的解决方案将满足您的需求,但在阅读您的问题后,我脑海中仍然浮现出一件事。。。在你的控制器中,你试图使用标题阅读文章,我的意思是这会减慢你的系统速度,这在编程中是不推荐的,所以使用id并在你的db表中增加一列slug(SEO标题),它将用于创建你的文章url
For example:
Post title: This is a test post
Create seo title for this as: this-is-a-test-post-123
Stor seo title in DB as <this-is-a-test-post>
好的,上面提供的解决方案将满足您的需求,但在阅读您的问题后,我脑海中仍然浮现出一件事。。。在你的控制器中,你试图使用标题阅读文章,我的意思是这会减慢你的系统速度,这在编程中是不推荐的,所以使用id并在你的db表中增加一列slug(SEO标题),它将用于创建你的文章url
For example:
Post title: This is a test post
Create seo title for this as: this-is-a-test-post-123
Stor seo title in DB as <this-is-a-test-post>