问题描述
说明
我尝试使用 Laravel 开发一个小型多语言 CMS (repository)。因此,我需要根据用户输入修改地址栏中的 url。例如,用户输入 www.example.com/page1
并且在 cms 的数据库中找不到此页面/网址,我想重定向到 www.example.com/404
。
其他用例:用户输入 www.example.com/contact
,找到网址,然后我想在浏览器地址栏中显示网址,如下所示:www.example.com/en/contact
。
代码:目前我有一个PageDataGetter
类(repo link),它搜索数据并返回
具有所需数据(或 404 页数据)的 DTO。然后我组装数据。
PageAssembler
public function assemble(
PageDataGetterResponseTransfer $pageDataGetterResponseTransfer
): PageAssemblerResponseTransfer {
$pageAssemblerResponseTransfer = new PageAssemblerResponseTransfer();
$pageAssemblerResponseTransfer->setPage(
response()
->view(
TemplateInterface::VIEW_PREFIX . $pageDataGetterResponseTransfer->getViewString(),$pageDataGetterResponseTransfer->getPageDataTransfer()->getPageData(),$pageDataGetterResponseTransfer->getStatusCode()
)
->header('Location',$pageDataGetterResponseTransfer->getUrl())
);
return $pageAssemblerResponseTransfer;
}
在控制器中,我只是尝试像这样返回响应,但它不会更改浏览器地址栏中的 url。
前端控制器
$pageAssemblerResponseTransfer = $pageAssembler->assemble($pageDataGetterResponseTransfer);
return $pageAssemblerResponseTransfer->getPage();
至少我不确定,如果这是正确的方向,我正在努力实现我的目标。
我也尝试通过重定向来解决它,但我不知道如何将字符串传递给视图/刀片,我还需要动态设置状态代码的可能性。
也许有人对我有暗示?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)