在每个控制器之前设置变量

时间:2016-03-26 01:25:58

标签: php symfony

事先注意:我无法使用安全捆绑包,因为我使用的数据库也被构建在整个其他角色系统上的其他应用程序使用。

我正在尝试设置一个变量来检查用户是否在每个控制器操作之前登录。我想要做的是检查它是否已登录(通过会话),如果是这种情况,则加载与我的UserRepository中的查询对应的实体。

我知道这通常是通过Symfony的安全捆绑包来完成的,但是由于它要求你实现UserProviderInterface我完全不能使用它,但是如果有人知道你是否可以使用自定义转换映射编写自己的UserProviderInterface对于角色。那也很棒。

我希望我能够提供有关我的问题的信息。

TL; DR:有没有办法在每个控制器操作之前设置一个变量,以下控制器可以访问它。

1 个答案:

答案 0 :(得分:1)

我认为你可以使用会话:

use Symfony\Component\HttpFoundation\Request;

public function indexAction(Request $request)
{
    $session = $request->getSession();

    // store an attribute for reuse during a later user request
    $session->set('foo', 'bar');

    // get the attribute set by another controller in another request
    $foobar = $session->get('foobar');

    // use a default value if the attribute doesn't exist
    $filters = $session->get('filters', array());
}

请查看链接http://symfony.com/doc/current/book/controller.html