유창한 언어 전환기 템플릿을 사용하여 LocalMenu
템플릿을 사용하면 페이지로 표시되는 내 맞춤 컨트롤러와 데이터 객체에 대한 링크가 잘못되었습니다.SilverStripe Fluent - 사용자 지정 컨트롤러에서 쿼리 문자열 오류를 방지하는 방법?
그래서 둘 다 있습니다. 컨트롤러는 페이지로 표시되는 다른 사용자 정의 컨트롤러의 페이지 및 데이터 객체로 사용됩니다.
대신 en/sompage/foobar
Link
기능의 내 잘못 구현에 의한 생각
somepage/foobar?l=en_US
받을 수 있습니다.
어떻게해야 제대로 할 수 있습니까? 나는 그것에 대해 아무것도 찾을 수 없습니다.
public function Link($action = null) {
$parent = MyParentPage::get()->first()->URLSegment;
$home = RootURLController::get_default_homepage_link();
if($parent != $home) {
$url = $parent . '/';
} else {
$url = null;
}
return Director::baseURL() . $this->fluentUrlSegment() . $url . 'controller-segment';
}
및
public function fluentUrlSegment() {
if(class_exists('Fluent')) {
$locale = Fluent::current_locale();
$fluentConfig = Fluent::create()->config();
if($fluentConfig->default_locale != $locale) {
if($fluentConfig->aliases && isset($fluentConfig->aliases[$locale])) {
$locale = $fluentConfig->aliases[$locale];
}
$locale = $locale . '/';
} else {
$locale = '';
}
} else {
$locale = '';
}
return $locale;
}
유창하게 설정
---
Name: projectfluentconfig
After: '#fluentconfig'
---
Fluent:
disable_default_prefix: true
detect_locale: true
remember_locale: true
default_locale: de_DE
locales:
- de_DE
- en_US
aliases:
de_DE: de
en_US: en
field_exclude:
---
Name: projectfluentconfig
After: '#fluenti18nconfig'
---
i18n:
default_locale: de_DE
업데이트 WMK의 대답은 내 링크 기능을 향상시킬 수에
감사 : 그건 내 현재 코드입니다. 불행히도 아직 Fluent Locale 메뉴의 링크에는 아무 것도 변경되지 않았습니다.
대신 geschichte/..
및 en/geschichte/..
나는 영어 하나 geschichte/..?l=de_DE
및 geschichte/..?l=en_US
독일 사이트 및 en/geschichte/..?l=de_DE
및 en/geschichte/..?l=en_US
을받을 수 있습니다.
유창하게 링크 기능을 완전히 무시할 수 있습니까? 나는 아직도 실수를했거나 무언가를 놓쳤는가? 여기 내 shortend 코드 Controller, DataObject, Routes, Extensions & Fluent Config
어떤 제안입니까?
업데이트 2
FluentSiteTree
클래스의 LocaleLink
기능은 "문제"
영어가 기본 로케일입니까? 설정을 공유 할 수 있습니까? URL에서 기본 로케일을 제거하는 설정이 있습니다. –
독일어입니다. 내 질문을 편집하고 구성을 추가했습니다 –
당신의 데이터 객체에 대한 사용자 정의 컨트롤러가 있습니까 아니면 그냥 페이지의 하위 링크입니까? – wmk