2013-04-05 6 views
0

Я пытался создать службу в Symfony 2.2 для одного из моей формы:Symfony "Не удалось загрузить тип" сервис YAML

service.yml:

tyg_user.settings.form: 
    class: Symfony\Component\Form\Form 
    factory_method: createNamed 
    factory_service: form.factory 
    arguments: 
     - tyg_user_settings 
     - tyg_user_settings_name 
tyg_user.settings.form.type: 
    class: TyG\UserBundle\Form\Settings\SettingsFormType 
    tags: 
     - { name: form.type, alias: tyg_user_settings } 
tyg_user.settings.form.handler: 
    class: TyG\UserBundle\Form\Settings\SettingsFormHandler 
    scope: request 
    arguments: 
     - @tyg_user.settings.form 
     - @request 
     - @fos_user.user_manager 

SettingsForm.php

<?php 

namespace TyG\UserBundle\Form\Settings; 

use Symfony\Component\Form\FormBuilderInterface as FormBuilder;; 
use Symfony\Component\Form\AbstractType; 

class SettingsForm extends AbstractType 
{ 

    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
     ->add('birthday', 'birthday') 
     ->add('email', 'email') 
     ->add('showmail') 
     ->add('showbirthday') 
     ; 
    } 

    public function getName() 
    { 
     return 'tyg_user_settings'; 
    } 
} 
?> 

Но ошибка occuered:

Could not load type "tyg_user_settings_name 

Это происходит, когда я получаю свою форму через контейнер службы:

$this->container->get('tyg_user.settings.form'); 

Раньше я создать свою службу через формат XML, но когда я изменяю формат YML я не могу понять, как сделать это работы

ответ

2

tyg_user_settings_name ссылается на псевдоним типа формы.

Если вы хотите, чтобы он ссылался на параметр, вы должны использовать вместо него %tyg_user_settings_name%.

+0

Когда я использую формат xml, мне не нужно ссылаться на параметр. Почему в ямле я должен? – Imp

+0

С 'createNamed' factory_method является' createNamed ($ name, $ type = 'form' ... etc', первым аргументом является имя. Если вы не хотите называть его, вам следует просто использовать 'create' Вместо этого см. https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/FormFactory.php, строки 37 и 45 для 'create' и' createNamed' соответственно. – qooplmao

+0

Фактически я juste измените мою версию symfony от 2.0 до 2.2 и измените параметры createNamed, поэтому мне просто нужно поменять свой аргумент :) – Imp

Смежные вопросы