为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法将未选择的数据直接发送到控制器?

有没有办法将未选择的数据直接发送到控制器?

PHP
MM们 2022-07-09 09:27:36
我有一个带有ChoiceType字段的表单,我需要对选定的数据做一些事情,而对未选定的数据做一些事情。我想我需要使用选定的数据来检索未选定的数据,但是有没有办法直接将它们发送到控制器?也许有,empty_data但我不确定如何使用它。为了澄清我是否在 vue 中有它:<select name="carlist" form="carform" multiple>  <option value="volvo" selected>Volvo</option>  <option value="saab" selected>Saab</option>  <option value="opel">Opel</option>  <option value="audi">Audi</option></select>如何使用 检索“audi”和“opel”值$form->getData()?(当然如果可能的话)
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

如果字段是表单对象的一部分($form在本例中),要检索字段的数据,您carlist可以使用:

$carlist = $form->get('carlist');

或者,要从整个表单中获取数据,您可以使用:$data = $form->getData().

如果您的字段不是表单对象的一部分,您可以使用:

$carlist = $request->request->get('carlist');

这样做是从Request 对象中获取数据。


查看完整回答
反对 回复 2022-07-09
?
手掌心

TA贡献1942条经验 获得超3个赞

你有一个表格,像这样:


<select name="carlist" form="carform" multiple>

  <option value="volvo" selected>Volvo</option>

  <option value="saab" selected>Saab</option>

  <option value="opel">Opel</option>

  <option value="audi">Audi</option>

</select>

你的控制器:


    $form = $this->createForm(YourForm::class, //...);


    $choices = [

        'Volvo' => 'volvo',

        'Saab'  => 'saab',

        'Opel'  => 'opel',

        'Audi'  => 'audi',

    ];

    $form->add('carlist', ChoiceType::class, [

        'multiple' => true,

        'choices' => $choices

    ]);


    $form->handleRequest($request);


    if ($form->isSubmitted() && $form->isValid()) {

        $not_used_cars = [];

        $car_list = $form->get('carlist')->getData();

        foreach ($choices as $car) {

            if ( false === array_search( $car, $car_list ) )

                $not_used_cars[] = $car;

        }

        /*

         * dump($not_used_cars);

         * //Output:

         * [

         *      0 => 'opel'

         *      1 => 'audi'

         * ]

         */

    }


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信