Ich habe eine neue (create) -Methode für eine Roster-Entität und möchte zu dieser Methode von einer anderen Service-Benutzer-Entität aus navigieren, die den Service-Benutzer als Parameter übergibt. Ich möchte dann die ServiceUserId des Dienstplans auf die ID des Dienstbenutzerobjekts festlegen.Bind-Feld im Symfony-Formular an Parameter
Meine Controller-Methode leitet OK von der Servicebenutzereinheit zum Dienstplan und übergibt das Dienstbenutzerobjekt korrekt an das Formular.
/**
* Creates a new roster entity.
*
* @Route("/newfromsu/serviceUser={serviceUser}", name="roster_new_su")
* @Method({"GET", "POST"})
*/
public function newActionfromServiceUser(Request $request, ServiceUser $serviceUser)
{
$roster = new Roster();
$form = $this->createForm('AppBundle\Form\RosterType', $roster);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($roster);
$em->flush($roster);
return $this->redirectToRoute('roster_show', array('id' => $roster->getId()));
}
return $this->render('roster/newfromsu.html.twig', array(
'roster' => $roster,
'serviceUser'=>$serviceUser
,'form' => $form->createView(),
));
}
Die neue Roster Vorlagenseite und RosterType Klassen sind zur Zeit erstellt, wie durch den Templat-Code vorbelegt mit
{% extends '_base.html.twig' %}
{% block body %}
{{ dump() }}
<h1>Roster creation</h1>
{{ form_start(form) }}
{{ form_widget(form) }}
<input type="submit" value="Create" />
{{ form_end(form) }}
<ul>
<li>
<a href="{{ path('roster_index') }}">Back to the list</a>
</li>
</ul>
{% endblock %}
und
class RosterType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('serviceUserId')->add('rosterStartTime')->add('rosterEndTime')->add('rosterStatus')->add('numberResourcesNeeded')->add('customerId');
}
Meine Frage: Wie ich das einstellen kann serviceUserId Wert im neuen Formular ID des eingehenden ServiceUser-Objekts
Kann ich dies im FormBuilder tun oder muss ich manuell ein Twig-Formular erstellen, das jedes Attribut auflistet und das entsprechende Steuerelement dort bindet.
Danke!
Vielen Dank Frank für Ihre sehr klare Antwort, die perfekt funktioniert! –