奏鸣曲中基于数据库值的选择列表

Posted

技术标签:

【中文标题】奏鸣曲中基于数据库值的选择列表【英文标题】:A choice list based on database values in sonata 【发布时间】:2016-09-16 03:26:02 【问题描述】:

是否可以在 configureformfields 中添加一个选项列表,其中包含从数据库映射的选项值,而不是像这样手动配置它:

->add('testfield', 'choice', array('choices' => array(
                    '1' => 'choice 1',
                    '2' => 'choice 2',)))

【问题讨论】:

【参考方案1】:

如果实体映射正确,那么您可以使用:

->add('testfield')

Sonata 管理员将完成这项工作。

假设您有一个 Product 类链接到 Category 类:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Product
 *
 * @ORM\Table(name="product")
 * 
 */
class Product

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
     */
    protected $category; 

    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    
        return $this->id;
    

    /**
     * Set category
     *
     * @param Category $category
     *
     * @return Product
     */
    public function setCategory(Category $category = null)
    
        $this->category = $category;

        return $this;
    

    /**
     * Get category
     *
     * @return Category
     */
    public function getCategory()
    
        return $this->category;
    

只需使用:

->add('category')

将提供一个包含所有类别的选择表单字段。

如果您想要更高级的东西,也可以使用 SONATA_TYPE_MODEL:

<?php
// src/AppBundle/Admin/ProductAdmin.php

class ProductAdmin extends AbstractAdmin

    protected function configureFormFields(FormMapper $formMapper)
    
        $imageFieldOptions = array(); // see available options below

        $formMapper
            ->add('category', 'sonata_type_model', $imageFieldOptions)
        ;
    

文档在此页面上:Form Types

希望这会有所帮助!

【讨论】:

以上是关于奏鸣曲中基于数据库值的选择列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在奏鸣曲中获取字段类型的自定义值?

Sonata Admin:获取所有页面的下拉列表

如何在奏鸣曲管理列表视图中添加“后备标签”

奏鸣曲管理员获取所有列表项

基于具有列表值的多列删除数据框中的重复行[重复]

抽象类的奏鸣曲管理员:如何按子类属性过滤