加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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中访问它.

有任何想法吗?

提前致谢!

编辑:
关于选定的答案;页面属性可通过$request-> attributes-> get(‘page’)访问,而不是通过$request-> query-> get(‘page’)访问.

解决方法

您需要将请求堆栈服务注入表单类型来执行此操作:

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 }

但是,建议您创建新选项以传递表单类型所需的所有变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读