2015-12-01 108 views
1

我正在嘗試向Silex路由添加帳戶。我的目標是有這樣的路線:將帳戶令牌添加到路由

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

你可以找到我的代碼here on github。這是一個小樣本。我可以從請求中讀取帳戶令牌並將帳戶保存在AccountListener中。

我嘗試處理_account,如_locale。一旦設置或更新,應用程序就不必擔心。這意味着如果我撥打$app['url_generator']->generate('blog'),將自動設置_account參數。

這是我目前的問題。我不知道如何通知UrlGenerator設置這些參數。

也許我的方法是完全錯誤的。

我希望你可以給我一些例子或食譜或somethink。或合併請求。

回答

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

真棒,非常感謝。我會試一試! –