gpt4 book ai didi

php - 在 Symfony v4.2 中将带有数据的数组传递给 ChoiceType (html select)

转载 作者:行者123 更新时间:2023-12-04 01:49:28 24 4
gpt4 key购买 nike

介绍

对于我的个人项目,我使用

  • Symfony v4.2
  • PHP 7.2.12

  • 问题

    我不知道如何制作 ChoiceType元素展示 IDsEMAILsHTML SELECT选项值和索引。

    例子

    图片显示 html select当前状态数据( idemail )来自数据库。

    The picture displays current state of `thml select  with data from database

    代码

    Array of data from database ($this->userChoices)


    array:4 [
    0 => array:2 [
    "id" => 7
    "email" => "1st@example.com"
    ]
    1 => array:2 [
    "id" => 8
    "email" => "2nd@example.com"
    ]
    2 => array:2 [
    "id" => 5
    "email" => "3rd@example.com"
    ]
    3 => array:2 [
    "id" => 6
    "email" => "4th@example.com"
    ]
    ]

    What i am getting


    <select id="my-select" name="my-select" class="form-control">
    <optgroup label="0">
    <option value="7">7</option>
    <option value="1st@example.com">1st@example.com</option>
    </optgroup>
    <optgroup label="1">
    <option value="8">8</option>
    <option value="2nd@example.com">2nd@example.com</option>
    </optgroup>
    <optgroup label="2">
    <option value="5">5</option>
    <option value="3rd@example.com">3rd@example.com</option>
    </optgroup>
    <optgroup label="3">
    <option value="6">6</option>
    <option value="4th@example.comm">4th@example.com</option>
    </optgroup>
    </select>

    What i want to get


    <select id="my-select">
    <option value=""> Please choose an option </option>
    <option value="7">1st@example.com</option>
    <option value="8">2nd@example.com</option>
    <option value="5">3rd@example.com</option>
    <option value="6">4th@example.com</option>
    </select>

    Relevant part of myChoiceType


    ->add('selectUser', ChoiceType::class,
    [
    'choices' => $this->userChoices,
    'choice_value' => function ($choice)
    {
    return $choice;
    },
    'choice_label' => function ($value)
    {
    return $value;
    },
    'mapped' => false,
    'expanded' => false,
    'multiple' => false,
    ]
    )

    最后

    我究竟做错了什么?

    获取方式 ChoiceType显示器 datahtml select以我想要的方式?

    谢谢你的想法!

    最佳答案

    根据 the docs , choices value 必须是一个简单的 key => value 数组。

    The choices option is an array, where the array key is the item's label and the array value is the item's value



    您可以使用以下代码轻松获取您想要的选择数组:
    $choices = [];
    foreach ($this->userChoices as $choice) {
    $choices[$choice['email']] = $choice['id'];
    }

    然后使用以下初始化代码:
    ->add('selectUser', ChoiceType::class,
    [
    'choices' => $choices,
    'mapped' => false,
    'expanded' => false,
    'multiple' => false
    ]
    )

    不是我删除了 choice_valuechoice_label在这种情况下没有任何作用。

    关于php - 在 Symfony v4.2 中将带有数据的数组传递给 ChoiceType (html select),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53934278/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com