2015-12-01 2 views
1

Я пытаюсь добавить учетную запись на маршрут Silex. Моя цель состоит в том, чтобы иметь маршруты, такие как:Добавить токен учетной записи в маршрутизацию

/{_account}/{_locale}/ 
/{_account}/{_locale}/products 
/{_account}/{_locale}/block 

Вы можете найти свой код here on github. Это небольшой образец. Я могу прочитать токен учетной записи из запроса и сохранить учетную запись в AccountListener.

Я стараюсь обрабатывать _account как _locale. После установки или обновления приложение не должно беспокоиться об этом. Это означает, что параметр _account будет установлен автоматически, если я позвоню $app['url_generator']->generate('blog').

Это моя текущая проблема. Я не знаю, как сообщить UrlGenerator о настройке этих параметров.

Возможно, мой подход совершенно неправ.

Надеюсь, вы можете прислать мне несколько примеров или Поваренных книг или что-то вроде. Или запрос слияния.

ответ

0

UrlGenerator использует параметры от request_context (как вы можете видеть in the code), чтобы вы могли установить их в своем слушателе.

SRC/app.php

$dispatcher = $app['dispatcher']->addSubscriber(
    new AccountListener(
     new AccountRepository(), 
     $app['request_context'], 
     $app['monolog'] 
    ) 
); 

SilexLab \ Слушатель \ AccountListener

public function __construct(
    AccountProvider $accountProvider, 
    RequestContext $requestContext, 
    Logger $logger 
) { 
    //... 
    $this->requestContext = $requestContext; 
} 

public function onKernelRequest(GetResponseEvent $event) 
{ 
    //... 

    $request->attributes->set('_account', $account); 

    $this->requestContext->setParameter('_account', $account); 
} 
+0

Awesome, спасибо. Я попробую! –

Смежные вопросы