首页 > 解决方案 > 如何在控制器 CakePHP 中使用 $this->Html->url?

问题描述

我正在使用 ajax 从控制器获取数据。我需要将 url 从控制器传输到通过 ajax 查看。

在控制器中,如果我使用:$article['url'] = '/articles/edit/4bce...';,当我单击时,它将重定向到https://admin-trb-dev-web01.tmh-sd.com/articles/edit/4bce(404 未找到)。

那是我不想要的页面。我要重定向的页面是:https://my-trb-dev-web01.tmh-sd.com/articles/edit/4bce...

所以我想用$this->Html->url(array('controller' => 'WriteArticles','action' => 'edit','tuid' =>'4bce...')). 它在视图上运行良好,但在控制器中,它不起作用。

我试过像下面的代码。但输出不是 https://my-trb-dev-web01.tmh-sd.com/articles/edit/4bce...

    $article['url'] =  Router::url(array(
                'controller' => 'WriteArticles',
                'action' => 'edit',
                'tuid' =>  $article['Article']['tuid']).TRUE);
    $article['url'] = str_replace("\\/", "/", $article['url']);
    return json_encode($article);

输出: url: 'https://admin-trb-dev-web01.tmh-sd.com/articles/edit/4bce..':(

标签: urlcakephpcakephp-2.0router

解决方案


它在视图上运行良好,但在控制器中,它不起作用。

因为您违反了MVC框架的原则。分层是有原因的。

控制器提供了完全符合您要求的 redirect()。我强烈建议你从文档中做一个基本教程,因为我认为很明显你还没有阅读过框架的基础知识:https ://book.cakephp.org

还有一章描述了如何以正确的方式进行 JSON 响应。


推荐阅读