2014-03-31 58 views
0

我正在創建新的發票表單,其中包括具有某些常量值的選擇輸入。 我已經通過服務使它:symfony2服務數組參數。如何根據密鑰獲得價值

services.yml

parameters: 
    stawki_vat: 
     0: 0% 
     5: 5% 
     8: 8% 
     23: 23% 
     zw: zw. 
services: 
    acme.form.type.stawki_vat: 
     class: Acme\FakturyBundle\Form\Type\StawkiVatType 
     arguments: 
      - "%stawki_vat%" 
     tags: 
      - { name: form.type, alias: stawki_vat } 

StawkiVatType.php

class StawkiVatType extends AbstractType 
{ 
    private $stawkiVatChoices; 

    public function __construct(array $stawkiVatChoices) { 
     $this->stawkiVatChoices = $stawkiVatChoices; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'choices' => $this->stawkiVatChoices, 
     )); 
    } 

    public function getParent() 
    { 
     return 'choice'; 
    } 

    public function getName() 
    { 
     return 'stawki_vat'; 
    } 
} 

TowarType.php

class TowarType extends AbstractType 
{ 
    /** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('nazwa_towar', null, array('label' => 'Nazwa towaru/usługi')) 
     ->add('cena_netto', null, array(
      'label' => 'Cena netto' 
     )) 
     ->add('vat', 'stawki_vat', array(
      'attr' => array('class' => 'styled'), 
      'label' => 'Stawka VAT', 
     )) 
    ; 
} 

在形式上,一切都很完美。 但現在,我想獲取存儲在數據庫(stawki_vat的鍵)中的值並顯示stawki_vat數組的值。

如何以簡單的方式實現這一點?

回答

0

您需要將您的實體管理器傳遞給您的自定義表單類型服務。假設你正在使用原則:

services.yml

services: 
    acme.form.type.stawki_vat: 
     class: Acme\FakturyBundle\Form\Type\StawkiVatType 
     arguments: ["@doctrine.orm.entity_manager","%stawki_vat%"] 

StawkiVatType.php

class StawkiVatType extends AbstractType 
{ 
private $stawkiVatChoices; 
private $em; 

public function __construct(EntityManager $em, array $stawkiVatChoices) { 
    $this->em = $em; 
    $this->stawkiVatChoices = $stawkiVatChoices; 
} 

// ... 
+0

順便說一句,如果你需要注入你知道存在的服務,但你不知道名稱,你可以使用'php app/console container:debug'。例如,'php app/console container:debug | grep EntityManager'會輸出顯示服務名稱的doctrine.orm.default_entity_manager容器Doctrine \ ORM \ EntityManager'(doctrine.orm.entity_manager'只是這個服務的別名)。 – Peter

+0

好吧,在表單中它的效果很好,但是如何在發票清單中顯示'23%'而不是'23'?如何獲得stawki_vat屬性並顯示此特定鍵的值? –

+0

您需要爲您的自定義表單類型[創建模板](http://symfony.com/doc/currentbook/form/create_custom_field_type.html#creating-a-template-for-the-field)。 – Peter