Я пытался создать службу в 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 я не могу понять, как сделать это работы
Когда я использую формат xml, мне не нужно ссылаться на параметр. Почему в ямле я должен? – Imp
С '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
Фактически я juste измените мою версию symfony от 2.0 до 2.2 и измените параметры createNamed, поэтому мне просто нужно поменять свой аргумент :) – Imp