【问题标题】:Multiples form request Symfony 4多重表单请求 Symfony 4
【发布时间】:2019-11-05 11:14:51
【问题描述】:

我想构建表单来执行多个请求。 这是我想做的一个例子

在这种情况下,SQL 请求应该是这样的:

SELECT * FROM DB WHERE city = city1 or city = city2 or pet = pet2 or pet = pet3 or food = food1

我试图用 symfony 来做,但没有成功,因为“symfony 除了字符串不是数组”

   class CoreSearchType extends AbstractType
    {
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('city' , ChoiceType::class, [
            'choices' =>array('France' => $this->getChoicesCities()),
                'label' => false,'required' => true,'placeholder'=>'Choose','multiple' => true])

但我不知道该怎么做。 如果有人可以帮助我找到方法... 请注意我使用的是 symfony 4

编辑:我希望能够选择两个城市(或更多),例如:city1 和 city2(所有 city1 样本 + city2 样本,而不是变量类型提示 city1 和 city2)

例如,如果: city1 = 巴黎、东京、里约 city2= 亚眠,马德里,伦敦

请求的答案是:paris,tokyo,rio,amiens,madrid,london

谢谢!

【问题讨论】:

  • $this->getChoicesCities() 究竟返回了什么?
  • 它的私有方法,调用城市所在的实体
  • 可以分享一下这个方法的代码吗?
  • 很高兴私有函数 getChoicesCities() { $mizecore = Core::ARRON; $输出 = []; foreach (Core::ARRON as $key => $value) { $output[$value] = $key; } 返回 $ 输出; }
  • 非常感谢您的支持

标签: php forms symfony


【解决方案1】:

从我在您的问题中可以看出,您需要一个包含三种选择类型的表单。这是一个关于这看起来如何的示例。

class CoreSearchType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options) 
    {
        $builder
            ->add('city', ChoiceType::class, [
                'choices' => [
                    'city 1' => 'city1',
                    'city 2' => 'city2',
                    'city 3' => 'city3',
                ],
                'label' => false,
                'placeholder' => 'Choose',
                'multiple' => true,
            ])
            ->add('pet', ChoiceType::class, [
                'choices' => [
                    'pet 1' => 'pet1',
                    'pet 2' => 'pet2',
                    'pet 3' => 'pet3',
                ],
                'label' => false,
                'placeholder' => 'Choose',
                'multiple' => true,
            ])
            ->add('city', ChoiceType::class, [
                'choices' => [
                    'food 1' => 'food1',
                    'food 2' => 'food2',
                    'food 3' => 'food3',
                ],
                'label' => false,
                'placeholder' => 'Choose',
                'multiple' => true,
            ])
        ;
    }
}

请在此处查看 symfony 文档中有关 choices 选项的部分:https://symfony.com/doc/current/reference/forms/types/choice.html#choices

choices 选项是一个数组,其中数组键是项的标签,数组值是项的值

我认为你的错误可能来自这一行:

'choices' => array('France' => $this->getChoicesCities())

如果你把它改成它可能会起作用

'choices' => array($this->getChoicesCities())

【讨论】:

  • 您好!非常感谢您的帮助。不幸的是,我仍然遇到同样的错误
  • 在属性路径“city”处给出的“string”、“array”类型的预期参数。
  • 编辑:我希望能够选择两个城市,例如:city1 和 city2(所有 city1 样本 + city2 样本,而不是变量类型提示的 city1 和 city2)
  • 您能否分享您的方法的代码getChoicesCities() 或至少一个返回值示例?
猜你喜欢
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
相关资源
最近更新 更多