为什么CakePHP会生成这些网址
<server>/Reporting/OnlineBanking/index/page:1
而不是
<server>/Reporting/OnlineBanking/index?page=1
例如,使用JavaScript的相对路径会有很多麻烦。
是否可以选择更改它?
答案 0 :(得分:1)
默认情况下,CakePHP中的所有参数都是命名参数(url片段如/foo:bar/
)。默认情况下,这也适用于分页参数。
要为分页参数使用get参数 - 您可以通过setting appropriate config:
执行此操作public $paginate = array(
'paramType' => 'querystring'
);
这将生成以下形式的网址:
/the/url?page=1&limit=10
而不是:
/the/url/page:1/limit:10
string
非常脆弱之前您提到在javascript中使用get_backend_requests
等网址。
即使使用分页参数,如果你这样做,仍会发现问题。这是因为即使对于“相同”的网址,结果也可能不同:
/the/url => /the/get_backend_requests
/the/url/ => /the/url/get_backend_requests
相反 - 在javascript中将网址指定为绝对网址:
$.ajax({
type: 'POST',
url: "/xyz/get_backend_requests",
...
如果您的应用程序有时(或始终)安装在子文件夹中,您可以使用简单的功能来解释它:
e.g。在你的html / layout中:
<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"
...