bon*_*rte 0 html php symfony twig
我对php非常陌生,我不太了解这些属性是如何保存在中的$request。
我们正在使用类Controller.php,其中包含将数据传输到html.twig的每个函数;一个Model.php类,其中包含查询的所有函数,以从数据库中获取数据;我们在html部分使用Twig模板。
我知道,如果要获取属性,'user'我必须写:
$request->attributes->get('user'),因为其中存在'user'带有参数的数组'username','password'等等。
但是该属性'user'(或任何参数)如何进入$request?我需要通过属性访问更多数据,但是首先我必须知道如何将它们保存在那里。
谢谢!
attribues是应用程序填充的Symfony Request对象的唯一参数包。所有其它参数袋,像request,query,server,将填入HTTP请求数据。
attributes可以在应用程序生命周期的任何时间点进行填充,但是大多数情况下,它将在kernel.request事件侦听器中完成。如果您还没有使用过,Docs会解释有关事件侦听器的更多信息,并内置Symfony内核事件。
kernel.request事件背后的想法是在控制器之前调用它。对于实现所有请求都可以调用的代码而言,它是完美的选择。例如,这是内置RouterListener将路由路径参数添加为请求属性的方式。因此,如果路径为,则/foo/{bar}可以使用来访问路径占位符$request->attributes->get('bar')。在中发生的RouteListener是:
// $parameters contains route path placeholders
$request->attributes->add($parameters);
unset($parameters['_route'], $parameters['_controller']);
$request->attributes->set('_route_params', $parameters);
Run Code Online (Sandbox Code Playgroud)
如果您想在请求中添加更多属性,则需要实现自己的事件监听器。注册后,Symfony将自动调用它,并将填充您的属性。