php – Symfony:如何从FormType中的路由获取参数?
发布时间:2020-12-13 21:56:16 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试从FormType中的当前路由访问参数页面.它适用于Controller,但不适用于FormType.我想避免传递像/?page = 1和prefer / page / 1这样的参数. 使用routing.yml my_route: path: /data/page/{page} defaults: _controller: MyBundle:MyController:myAct
我正在尝试从FormType中的当前路由访问参数页面.它适用于Controller,但不适用于FormType.我想避免传递像/?page = 1和prefer / page / 1这样的参数.
使用routing.yml my_route: path: /data/page/{page} defaults: _controller: MyBundle:MyController:myAction SRC / myBundle /表/类型/ MyFormType.php class MyFormType extends AbstractType { // ... public function buildForm(FormBuilderInterface $builder,array $options) { $request = Request::createFromGlobals(); $page = $request->query->get('page'); echo "page: $page"; // empty // ... } } 我想避免将参数通过Controller传递给FormType,而是希望直接在FormType中访问它. 有任何想法吗? 提前致谢! 编辑: 解决方法
您需要将请求堆栈服务注入表单类型来执行此操作:
class MyFormType extends AbstractType { private $requestStack; public function __construct(RequestStack $requestStack) { $this->requestStack = $requestStack; } public function buildForm(FormBuilderInterface $builder,array $options) { $request = $this->requestStack->getCurrentRequest(); //do something: for example hide/show fields from request parameters } } 注册表单类型及其依赖项: services: app.form.type.myform: class: AppBundleFormTypeMyFormType arguments: ['@request_stack'] tags: - { name: form.type } 但是,建议您创建新选项以传递表单类型所需的所有变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |