对于我正在处理的应用,所有网址都在网址中包含当前帐号:
我还有一些不需要了解当前帐户的网址:
我有一个事件监听器( Options -MultiViews
RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET\ /+(.+)\.html [NC]
RewriteRule ^ %1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^/]+)/?$ $1.html [L]
)使用帐号从存储库中检索帐户,并将其设置为请求中的属性:
onKernelRequest
这允许我将帐户注入我的控制器操作:
$event->getRequest()->attributes->set('account', $account);
在同一个监听器中,我还在Router上下文中设置了account_number:
public function getAction(Account $account)
{
$priceBook = $account->>getPriceBook();
// ...
}
这允许我生成路线而不总是传递帐户:
$this->router->setParameter('account_number', $account->getAccountNumber());
我还在会话中设置了帐户来处理用户访问/个人资料页面的时间,并且n更长时间在URL中有account_number:
{{ path('app_product_get', { 'product_id': 123 }) }}
这是最好的方法吗?还是应该创建一个“保存”当前Account对象作为属性的服务?我在一个听众中做得太多了吗?