在 CodeIgniter 中将转义的 url 作为控制器参数传递


Passing escaped url as controller parameter in CodeIgniter

控制器Home有一个方法export

public function export($id , $url){
     ...
}

在我的聪明模板中,有一个链接:<a href="/home/export/{%$id%}/{%$url%}">export</a>。如果 url 是 http://www.facebook.com,export方法只需获取 http: 作为 url 的值。所以我把它改成<a href="/home/export/{%$id%}/{%$url|escape:'url'%}">export</a>,以转义url中的斜杠。

然后位置变成".../home/export/59/http%3A%2F%2Fwww.facebook.com%2F"(是我想要的),但带有"404 Not Found"错误(不是我想要的)。

为什么?位置不应该映射到export方法吗?以及如何使用完整的 url 映射到它?

在 Codeigniter 控制器中,每个方法参数都来自用/斜杠分隔的 URL。对于这种工作,Codeigniter通过诸如"URI包含不允许的聊天者"之类的错误。我建议您为此任务使用查询字符串来避免所有这些问题:

http://example.com/export/?id=1&url=http://www.facebook.com

public function export()
{
    $link = $this->input->get('url');
    echo $link;
}

在Codeigniter中,您可以获得完整的网址:

$this->uri->uri_string()

public function export($id , $url){
     echo  $this->uri->uri_string();
}