2012-03-29 13 views
0

Ich bin neu in symfony. Ich habe ein Anmeldeformular mit dem Code erstellt:Erweitern der bestehenden Klasse in Symfony

$user = new Register(); 
$form = $this->createForm(new RegisterType(), $user); 

In der RegisterType Klasse ich habe 5 Felder (zum Beispiel) .I die Werte in der Datenbank gespeichert werden, wenn der Benutzer Register mit dem System. Jetzt zeige ich die EDIT-Seite folgenden Code:

$user = $em->getRepository('MysiteUserBundle:Register')->find($id); 
$form = $this->createForm(new RegisterType(), $user); 

//edit.html.twig Code

 <form action="{{ path('MysiteUserBundle_register_update',{'id':user.id}) }}" method="post" {{ form_enctype(form) }} class="register"> 
      {{ form_errors(form) }} 

      {{ form_row(form.firstname) }} 
      {{ form_row(form.lastname) }} 
      {{ form_row(form.username) }} 



      <p> 
      <input type="submit" value="Submit"> 
       </p> 
      </form> 

Das Problem mit dem EDIT-Code ist jedoch, dass es mir zeigt alle genannten Felder in RegisterType class.Ist es möglich, nur einige Felder anzuzeigen. Wenn ja, wie kann dies erreicht werden? Jede Hilfe wird geschätzt

+0

Können wir Ihren Zweigvorlagencode bitte sehen ... – Flukey

Antwort

2

Es ist nicht sinnvoll, den Registrierungsformulartyp zum Bearbeiten eines Benutzers zu verwenden, da die Registrierung einmal pro Benutzer erfolgt. Stattdessen könnten Sie einen anderen Formulartyp mit nur den Feldern erstellen, die Sie beim Bearbeiten eines Benutzers benötigen. Man kann den anderen erweitern, um Doppelarbeit zu vermeiden.

Sie könnten auch:

  • nur ein Formulartyp halten, aber einige Felder bedingt hinzufügen - das heißt, nur wenn das Unternehmen neu. Sie können Ihre Entität im Formulartyp als $options['data'] abrufen und prüfen, ob die ID nicht null oder was auch immer ist.
  • Verwenden Sie form events.