为什么CakePHP会生成这些URL
<server>/Reporting/OnlineBanking/index/page:1而不是
<server>/Reporting/OnlineBanking/index?page=1例如,使用JavaScript之外的相对路径会有很多问题。
有没有改变它的选项?
发布于 2013-07-16 19:05:40
使用get参数进行分页
默认情况下,CakePHP中的所有参数都是命名参数(像/foo:bar/这样的url片段)。默认情况下,这也适用于分页参数。
为了对分页参数使用get参数,您可以通过setting appropriate config来实现
public $paginate = array(
'paramType' => 'querystring'
);这将生成以下形式的urls:
/the/url?page=1&limit=10而不是:
/the/url/page:1/limit:10将urls指定为string是非常脆弱的
之前你提到过在javascript中使用像get_backend_requests这样的urls。
即使使用分页的get参数,您仍然会发现问题。这是因为即使对于“相同”的url,结果也可能是不同的:
/the/url => /the/get_backend_requests
/the/url/ => /the/url/get_backend_requests相反-将javascript中的urls指定为绝对urls:
$.ajax({
type: 'POST',
url: "/xyz/get_backend_requests",
...如果你的应用有时(或总是)安装在子文件夹中,你可以用一个简单的函数来解决这个问题:
例如,在您的html/布局中放置:
<html>
...
<script>
function url(url) {
return <?php
$base = rtrim(Router::url('/'), '/');
if ($base) {
echo "'$base' + ";
}
?>url;
}
</script>它将输出:
<html>
...
<script>
function url(url) {
return '/subfolder' + url;
}
</script>
$.ajax({
type: 'POST',
url: url("/xyz/get_backend_requests"), // becomes the string "/subfolder/xyz/get_backend_requests"
...https://stackoverflow.com/questions/17653674
复制相似问题