【问题标题】:Symfony get single form field post value in controller methodSymfony 在控制器方法中获取单个表单字段的后值
【发布时间】:2017-09-22 07:37:54
【问题描述】:

我正在使用 symfony 2.8,我正在提交注册 from to registerAction 方法。当我在 registerAction 方法中使用 $form-getdata() 时,我会收到所有提交的数据。

AppBundle\Entity\User Object
(
    [id:AppBundle\Entity\User:private] => 
    [name:AppBundle\Entity\User:private] => testname
    [email:AppBundle\Entity\User:private] => test@test.com
    [roles:AppBundle\Entity\User:private] => Admin User
    [plainPassword:AppBundle\Entity\User:private] => 123456
    [password:AppBundle\Entity\User:private] => 
)

我已使用$request->request->get('name') 获取单个名称值,但它显示空白屏幕且不打印任何内容。

在浏览器中查看源代码时,我的 html 表单如下所示。

<form name="user" method="post" novalidate="novalidate">
            <div class="form-group">
                <div><label for="user_name" class="required">Name</label><input type="text" id="user_name" name="user[name]" required="required" class="form-control" /></div>
            </div>
            <div class="form-group">
                <div><label for="user_email" class="required">Email</label><input type="email" id="user_email" name="user[email]" required="required" class="form-control" /></div>
            </div>
            <div class="form-group">
                <div><label for="user_roles" class="required">Roles</label><select id="user_roles" name="user[roles]" class="form-control" style="margin:5px 0;"><option value="Normal User">Normal User</option><option value="Admin User">Admin User</option></select></div>
            </div>
            <div class="form-group">
                <div><label for="user_plainPassword_first" class="required">Password</label><input type="password" id="user_plainPassword_first" name="user[plainPassword][first]" required="required" class="form-control" /></div>
            </div>
            <div class="form-group">
                <div><label for="user_plainPassword_second" class="required">Repeat Password</label><input type="password" id="user_plainPassword_second" name="user[plainPassword][second]" required="required" class="form-control" /></div>
            </div>
            <div><button type="submit" id="user_Register" name="user[Register]" class="btn btn-success form-control">Register</button></div><input type="hidden" id="user__token" name="user[_token]" value="epZFHVctxHFlsnxG-H4OdS92DmGVjP1DDF-bKJrV2Ss" />
    </form>

如何获得单个发布的表单值?

【问题讨论】:

  • 试试$request-&gt;request-&gt;get('user')应该有一个包含所有值的数组
  • 是的,它的显示数组,但是有什么方法可以直接获取值
  • 首先,为什么需要单值? (也许有更好的方法来做你正在尝试的事情)其次,如果你正在创建表单类型并传递用户对象,你可以在 handleRequest 之后做Object-&gt;getvalue
  • 我需要单个数据来满足某些检查条件,我是 symfony 的新手,能否请您告诉我为什么在表单中创建用户数组,如何删除用户数组,我已经创建了这个表单在控制器中使用“FormBuilderInterface”接口。
  • 您可以使用自定义验证器进行检查,创建用户数组是因为您的名字是name="user[roles]"

标签: php forms symfony symfony-2.8


【解决方案1】:

如果$request-&gt;request-&gt;get('{form_name}') 返回一个包含表单数据的数组,那么您可以使用$request-&gt;request-&gt;get('user')['name'] 访问特定的输入字段。但是您应该改用表单类,您可以在其中定义所有必要的字段以及验证约束等。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多