CakePHP - Router::url() 生成相对于当前页面的 url

Posted

技术标签:

【中文标题】CakePHP - Router::url() 生成相对于当前页面的 url【英文标题】:CakePHP - Router::url() generating url relative to current page 【发布时间】:2021-05-07 05:06:25 【问题描述】:

我正在尝试用 Cakephp 3.8 Router::url() 方法替换我的所有静态路由。

在我的本地环境中,当从manage/lender-products/read/2 路由访问下面的代码时,我从下面的代码中得到了/manage/lenders 的预期结果:

\Cake\Routing\Router::url(['controller' => 'Lenders', 'action' => 'index'])

但是,在生产 (bref.sh/AWS Lambda/PHP 7.4) 中,我得到了 /manage/lender-products/read/manage/lenders 的意外结果。

似乎在我的生产环境中,正在生成 URL,并且在最终结果中包含当前页面 url。

【问题讨论】:

【参考方案1】:

如果您没有为 App.base 配置选项设置自定义基本路径,CakePHP 将尝试根据 $_SERVER['PHP_SELF']$_SERVER['DOCUMENT_ROOT'] 自行计算可能的基本路径,因此很可能或两者都包含您的 AWS 环境中的意外值。

简单的解决方法是在config/app.php 中手动设置基本路径。如果您的应用程序实际上并不存在于公共子目录中(即如果 webroot 是您的文档根目录),那么您应该将路径设置为空字符串,否则提供路径,例如 /my/app(带有前导斜杠,但没有尾部斜杠!)。

另见

Cookbook > Configuration > General Configuration

【讨论】:

以上是关于CakePHP - Router::url() 生成相对于当前页面的 url的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP-完整URL

Cakephp3:如何在询问标记后使用get参数获取当前页面的完整URL

无法导航到 react-router-dom URL

如何删除 angular-ui-router URL 中的“#”符号

React Router URL 有效但组件无效

手动刷新或写入时,React-router url 不起作用