안녕하세요, 저는 PHP 세계에 처음 왔습니다. 다국어 라우팅을 처리하는 가장 좋은 방법은 무엇입니까? Phalcon php로 웹 사이트를 만들기 시작했습니다. 다음 라우팅 구조가 있습니다. 내가 mywebsite.com/en/ 또는 다른 언어로 같은 디스패처 내 URL을 변경하려는 mywebsite.com/에 갈 때팔콘 php 다국어 라우팅
$router->add('/{language:[a-z]{2}}/:controller/:action/:params', array(
'controller' => 2,
'action' => 3,
'params' => 4,
));
$router->add('/{language:[a-z]{2}}/:controller/:action', array(
'controller' => 2,
'action' => 3,
));
$router->add('/{language:[a-z]{2}}/:controller', array(
'controller' => 2,
'action' => 'index',
));
$router->add('/{language:[a-z]{2}}', array(
'controller' => 'index',
'action' => 'index',
));
내 문제는 예를 들면이다. beforeDispatchLoop에서 처리하는 것이 좋습니다. 나는 최선의 해결책을 찾는다.
/**Triggered before entering in the dispatch loop.
* At this point the dispatcher don't know if the controller or the actions to be executed exist.
* The Dispatcher only knows the information passed by the Router.
* @param Event $event
* @param Dispatcher $dispatcher
*/
public function beforeDispatchLoop(Event $event, Dispatcher $dispatcher)
{
//$params = $dispatcher->getParams();
$params = array('language' => 'en');
$dispatcher->setParams($params);
return $dispatcher;
}
이 코드는 전혀 작동하지 않는, 내 URL이 변경되지 않습니다. url은 mywebsite.com/이 며 mywebsite.com/en/이 아닙니다. 미리 감사드립니다.
위의 해결책을 하나 시도해 보겠습니다. 리디렉션이 작동하지 않는 것 같습니다. 심지어 테스트 용으로 하드 코딩하려고합니다.
use Phalcon\Http\Response;
//Obtain the standard eventsManager from the DI
$eventsManager = $di->getShared('eventsManager');
$dispatcher = new Phalcon\Mvc\Dispatcher();
$eventsManager->attach("dispatch:beforeDispatchLoop",function($event, $dispatcher)
{
$dispatcher->getDI->get('response')->redirect('/name/en/index/index/');
}
"내 URL은 변경되지 않았습니다."는 의미를 분명히합니다. – Kris
내 질문을 편집합니다. 내가 설정 한 언어 매개 변수에 따라 url mywebsite.com/을 다른 것으로 변경하려고합니다. 언어 매개 변수를 'ru'로 설정하면 my urb는 mywebsite.com/ru가되어야합니다. – Biscottex