symfony2 にフォームタイプがあります:
namespace Acme\SomethingBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class GuestType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
->add('email')
->add('address')
->add('phone')
->add('created_at')
->add('updated_at')
->add('is_activated')
->add('user','entity', array('class'=>'Acme\SomethingBundle\Entity\User', 'property'=>'id' ));
}
public function getName()
{
return 'acme_somethingbundle_guesttype';
}
}
アクション:
/**
* Displays a form to create a new Guest entity.
*
*/
public function newAction()
{
$entity = new Guest();
$form = $this->createForm(new GuestType(), $entity);
return $this->render('AcmeSomethingBundle:Guest:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView()
));
}
/**
* Creates a new Guest entity.
*
*/
public function createAction()
{
$entity = new Guest();
$request = $this->getRequest();
$form = $this->createForm(new GuestType(), $entity);
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('guest_show', array('id' => $entity->getId())));
}
return $this->render('AcmeSomethingBundleBundle:Guest:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView()
));
}
小枝テンプレート
<h1>Guest creation</h1>
<form action="{{ path('guest_create') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<p>
<button type="submit">Create</button>
</p>
</form>
<ul class="record_actions">
<li>
<a href="{{ path('guest') }}">
Back to the list
</a>
</li>
</ul>
'user' プロパティは、ユーザー ID のエンティティを変数として取り、小枝形式でドロップダウン ボックスとして表示されます。現在ログインしている(認証された)ユーザーのIDを自動的に挿入し、可能であれば「ユーザー」フィールドに非表示にします。ユーザーのIDを取得していることを知っています
$user = $this->get('security.context')->getToken()->getUser();
$userId = $user->getId();
しかし、私はそれを機能させることはできません。