2016-05-19 120 views
0

基於數據庫值選項列表是否有可能在configureformfields從數據庫,而不是手動配置這樣的映射選項值添加一個選擇列表:奏鳴曲

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

回答

0

如果實體正確映射那麼你可以使用:

->add('testfield') 

和索納塔管理員將完成這項工作。

比方說,你有一個鏈接到一個類別類的產品類:

<?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

希望這有助於!