【发布时间】:2020-06-01 00:58:29
【问题描述】:
我正在使用 OctoberCMS 翻译插件 (https://octobercms.com/plugin/rainlab-translate),它的工作方式符合我的预期。
但是,我有一个自定义要求,即在 url 中生成哈希(即http://localhost/ibis/whats-on/details#2020-sydney-international-whitewater-event - #2020-sydney-international-whitewater-event)。
现在的问题是,当我应该使用下面的代码进行重定向时,
{% for code, name in locales %}
<a class="dropdown-item" href="#" data-request="onSwitchLocale" data-request-data="locale: '{{ code }}'">
{{ name |upper }}
</a>
我可以重定向,但是,我的 url 失去了它的哈希标签,它变成了类似于 http://localhost/ibis/fr/whats-on/details 的东西(fr 是我选择的法语)。
下面是我在布局的代码选项卡中将代码覆盖到onSwitchLocale 方法,该方法由翻译插件提供。
use RainLab\Translate\Models\Locale as LocaleModel;
use RainLab\Translate\Classes\Translator;
use October\Rain\Router\Router as RainRouter;
function onSwitchLocale()
{
$this->translator = Translator::instance();
$locale = post('locale');
if (!$locale = post('locale')) {
return;
}
$this->translator->setLocale($locale);
$pageUrl = $this->translator->withPreservedQueryString($this->translator->makeLocaleUrlFromPage($locale), $locale);
if ($this->property('forceUrl')) {
return Redirect::to($this->translator->getPathInLocale($pageUrl, $locale));
}
return Redirect::to($pageUrl);
}
如您所见,我正在尝试使用哈希完成 url 重定向,但我在这里收到错误提示
调用未定义的方法 RainLab\Translate\Classes\Translator::withPreservedQueryString()
并且无法继续此请求。我进一步研究发现withPreservedQueryString 具有受保护的方法,我尝试了各种方法来执行此方法但无法执行。
所以首先我需要完成这个,其次我想在我的网址中附加hash 标签。
有人可以从这里指导我如何实现这一目标吗?
谢谢
【问题讨论】:
标签: php laravel octobercms octobercms-plugins