【问题标题】:Cakephp routing controller aliasCakephp 路由控制器别名
【发布时间】:2014-12-15 11:45:00
【问题描述】:

我正在尝试和这个站点一样,stackoverflow,对他们的 URL 做同样的事情。

CakePHP 的工作方式如下:website/controller/action/

我想配置路由来实现这个:

myWebSite.com/questions/(question_id)/(question)/

例如:myWebSite.com/questions/12874722/cakephp-routing-controller-alias /

我不知道如何处理 URL 的这个粗体部分。

【问题讨论】:

  • 这与“控制器别名”有什么关系?粗体部分是 slugged 问题标题。真正的问题是什么?你读过the docs吗? ps,请始终提及您的确切 CakePHP 版本并相应地标记您的问题。
  • 请注意,SO实际上忽略了问题标题,您可以将whatever you like放在那里,但如果您弄错了它会重定向(重要的是问题ID)
  • 实际的问题是我不知道怎么把它放在那里,URL中的问题标题。
  • 有 sluggable 行为检查它们,还将 slug 保存到您的数据库中,以将用户重定向到正确的 url,就像 S.O.正如@DavidG 所提到的
  • @DavidG 网站之间的常见模式。重定向到(SLUG != URI_SEGMENT[N])

标签: php cakephp cakephp-routing


【解决方案1】:

在你的 Config/routes.php 中

Router::connect('/questions/*', array('controller' => 'questions', 'action' => 'view'));

在 Controller/QuestionsController.php 中

查看操作获取问题 ID 为

public function view() {
    $question_id = isset($this->request->params['pass'][0]) ? $this->request->params['pass'][0] : "";
    $question = isset($this->request->params['pass'][1]) ? $this->request->params['pass'][1] : "";

    if( empty($question_id) ) {
        throw new NotFoundException('Could not find that question');
    }

    // if $question is empty then get slug from database and redirect to /question_id/question


    // Get question details and set
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2014-02-06
    • 2011-11-24
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多