Я пытаюсь добавить действие Controller к классу Page_Controller через расширение.Silverstripe Продление действия контроллера
Желаемый результат - это, например, возможность перейти на www.mysite.com/setlanguage/spanish
и обновить язык сайта до испанского через cookie браузера.
Тем не менее, я неудачно новичок в расширениях в SilverStripe, и пока я перехожу к ссылке на действие контроллера, все, что я получаю, это ошибка 404.
Пожалуйста, обратите внимание на мой код ...
class Page_ControllerLanguageExtension extends Extension {
private static $allowed_actions = array(
'setLanguage'
);
public function setLanguage(SS_HTTPRequest $request) {
$requestedLanguage = $request->param('ID');
$languageCookie = new Cookie;
$languageCookie->set('site_language', $requestedLanguage);
return $this->owner->RedirectBack();
}
}
И я звоню в расширении с конфигурационного файла YML:
Page_Controller:
extensions:
- Page_ControllerLanguageExtension
Спасибо заранее.
Try вызова 'www.mysite.com/ home/setlanguage/spanish' или 'www.mysite.com/ [page-url-segment]/setlanguage/spanish'. Вы хорошо выглядите. Я думаю, что единственная проблема заключается в том, что вы не можете вызывать действие на домашней странице без сегмента URL. – 3dgoo
выглядит правильно. Если вам нужен url '/ setlanguage/spanish /', вам нужно направить ваш контроллер на 'setlanguage' и получить параметр в методе' index() '. – wmk
Просто как это! Отлично, благодаря вам обоим. – Xander