Ich habe ein Formular Typ in 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';
}
}
Die Aktion:
/**
* 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()
));
}
Twig-Vorlage
<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>
die Eigenschaft "user" nimmt eine Entität von Benutzerkennungen als Variable auf und wird im Twig-Formular als Dropdown-Box angezeigt. Ich möchte, dass die Kennung des aktuell angemeldeten (authentifizierten) Benutzers automatisch - und wenn möglich verborgen - in das Feld "user" eingefügt wird. Ich weiß, dass ich die Kennung eines Benutzers erhalte mit
$user = $this->get('security.context')->getToken()->getUser();
$userId = $user->getId();
aber ich kann es nicht zum Laufen bringen.