でのサービスがされている形態を作成します。ここで私が設定している方法です私は任意のコントローラから行うことができるようにしたいのですがどのようなSymfony2の
$register = $this->get('register_manager');
return $this->render(
'AcmeUserBundle:Account:register.html.twig',
array(
'form' => $register->getRegistrationForm(),
)
);
そして、私のテンプレートで
<form>
{{ form_widget(form) }}
</form>
私は
parameters:
register_manager.class: Acme\UserBundle\Manager\RegisterManager
services:
register_manager:
class: %register_manager.class%
arguments: [@form.factory]
持っている私のAcme/UserBundle/Resources/config/services.yml
で、これまでにアップ
namespace Acme\UserBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('username','text');
$builder->add('email','email');
$builder->add('password','password');
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\UserBundle\Entity\User',
);
}
public function getName()
{
return 'registration';
}
}
私は、コントローラでそれを持っていたとしてRegistrationType()
作品を知っている:私は
namespace Acme\UserBundle\Manager;
use Acme\UserBundle\Form\Type\RegistrationType;
use Symfony\Component\Form\FormFactoryInterface;
class RegisterManager
{
protected $formFactory;
public function __construct(FormFactoryInterface $formFactory)
{
$this->formFactory = $formFactory;
}
public function getRegistrationForm()
{
return $this->formFactory->createBuilder(new RegistrationType());
}
}
を持ってAcme\UserBundle\Form\Type\RegistrationType
に私が持っているRegisterManager.php
で
私の問題は、サービスとしてRegisterManager
を設定することです。私はそこに適切なコンポーネントを手に入れることができず、どこから見えるのか分かりません。
遭遇する問題はなんですか? 「そこに適切なコンポーネントを手に入れることができない」とはどういう意味ですか?今は期待どおりに動作するはずです。 – gilden
今、私のRegistrationManagerサービスでは、 '' 'createForm(new RegistrationType())' ''を呼び出し、それをコントローラに渡すことができるようにする必要がありますが、 '' 'createForm()' ''が定義されており、このサービスクラスで利用できるようにする方法です。 Symfony Formsのドキュメントでは、 '' $ this-> createForm() '' 'のようにアクセスしますが、私は自分のサービスクラスでどのようにしますか?私はそれが '' 'FormFactoryInterface'''の一部ではないと思います。http://symfony.com/doc/current/book/forms.html#creating-form-classes – ed209
FOSUserBundleはform.factoryサービスを直接使用します。 RegisterManagerクラスの必要性を確認してください。https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/config/profile.xml – solarc