如何使用 Laravel/PHP 在浏览器地址栏中修改/设置 URL?

问题描述

目标
根据数据库搜索结果设置/修改浏览器地址栏中的url。

说明
我尝试使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...