turk porno porno escort rokettube
Ergebnis 1 bis 5 von 5

Thema: Registrierungsformular in zwei Schritte mit Doctrine

  1. #1
    Benutzer
    Registriert seit
    26.02.2010
    Beiträge
    50
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Registrierungsformular in zwei Schritte mit Doctrine

    Hallo zusammen,
    ich bastele gerade an einem Registrierungsformular mit zwei Schritten. Im ersten Schritt soll der User seine Persönlichen
    Daten eingeben und im zweiten Schritt weitere Angaben sowie ein Avatarbild uploaden können.
    Für den Ersten Schritt habe ich eine registerAction:
    PHP-Code:
    public function registerAction()
    {
     ...

    if (
    $request->isPost()) {

                
    $form->setInputFilter(new RegisterFormFilter($this->getServiceLocator()));
                
    $form->setData($request->getPost());

                if (
    $form->isValid()) {
                    
    $this->prepareData($account);
                    
    $entityManager->persist($account);
                    
    $entityManager->flush();

                     return 
    $this->redirect()->toRoute('register/default',  array('controller'=>'index''action'=>'stepZweiAction'));
                }
            }
    ...

    Nach erfolgreicher Registrierung mache ich ein Redirect auf die nächste Action mit dem zweiten Formular.
    Wie komme ich am besten stepZweiAction an die Userdaten um die Formulardaten aus Step zwei dem richtigen User zuzuordnen?
    Eine Idee war die Userid in die Session zu schreiben um dann in stepZweiAction ein update zu machen. Hat jemand eine bessere Idee?
    Danke vorab.

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von kakktus Beitrag anzeigen
    Eine Idee war die Userid in die Session zu schreiben um dann in stepZweiAction ein update zu machen.
    Wenn du bereits im ersten Schritt etwas in die Datenbank schreibst, dann ist dies doch passend.


    Zitat Zitat von kakktus Beitrag anzeigen
    PHP-Code:
    $form->setInputFilter(new RegisterFormFilter($this->getServiceLocator())); 
    Warum wird hier der „Service Locator“ weitergereicht?

    Zitat Zitat von kakktus Beitrag anzeigen
    PHP-Code:
     return $this->redirect()->toRoute('register/default',  array('controller'=>'index''action'=>'stepZweiAction')); 
    Musst du wirklich noch extra den Kontroller und die Aktion mit angeben? Hast du dies nicht bereits (teilweise) in der Routendefinition schon stehen?
    Ich würde hier nur die Angabe des Routennamen bevorzugen, damit kannst du jederzeit das Ziel der Route ändern, ohne weiteren Code anfassen zu müssen.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Benutzer
    Registriert seit
    26.02.2010
    Beiträge
    50
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    HI,

    danke für deine Antwort.
    Wenn du bereits im ersten Schritt etwas in die Datenbank schreibst, dann ist dies doch passend.
    Dann werde ich das so machen. Ich dachte es gibt vielleicht noch eine bessere Lösung.

    Warum wird hier der „Service Locator“ weitergereicht?
    Das nutze ich hierfür:
    PHP-Code:
    ....
    array(
                        
    'name'    => 'DoctrineModule\Validator\NoObjectExists',
                        
    'options' => array(
                            
    'object_repository' => $sm->get('doctrine.entitymanager.orm_default')->getRepository('User\Entity\User'),
                            
    'fields' => 'userName'
                        
    ),
                    ),

    .... 
    Musst du wirklich noch extra den Kontroller und die Aktion mit angeben? Hast du dies nicht bereits (teilweise) in der Routendefinition schon stehen?
    Ich würde hier nur die Angabe des Routennamen bevorzugen, damit kannst du jederzeit das Ziel der Route ändern, ohne weiteren Code anfassen zu müssen.
    Ich bin gerade noch am probieren und da habe ich die Routen noch nicht richtig gesetzt. Aber danke für den Tip. Da hast du natürlich recht.

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von kakktus Beitrag anzeigen
    PHP-Code:
    'object_repository' => $sm->get('doctrine.entitymanager.orm_default')->getRepository('User\Entity\User'), 
    Übergib direkt das Ergebnis der Methode „getRepository“, denn dies wird von dem Filter gebraucht und nicht der „Service Locator“. Der Filter muss gar nicht wissen, dass überhaupt ein „Service Locator“ existiert.

    Noch ein anderer Hinweis: Da ein Filter fast immer nur genau auf ein Formular passt bzw. für dieses definiert wurde, könnte man sich die Auslagerung in eine eigene Klasse sparen.

    PHP-Code:
    use Zend\Form\Form;
    use 
    Zend\InputFilter\InputFilterProviderInterface;

    class 
    Foo extends Form implements InputFilterProviderInterface
    {
        


        
    /**
         * Should return an array specification compatible with
         * {@link Zend\InputFilter\Factory::createInputFilter()}.
         *
         * @return array
         */
        
    public function getInputFilterSpecification()
        {
            return array(
                
    'elementName' => array(
                    
    'required' => false,
                    
    'filters' => array(),
                    
    'validators' => array(),
                ),
            );
        }

    Zitat Zitat von kakktus Beitrag anzeigen
    Da hast du natürlich recht.
    Es kann dadurch zu sehr vielen Routen kommen, aber die Definitionen sind schnell geschrieben und auch nicht so umständlich.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    Benutzer
    Registriert seit
    26.02.2010
    Beiträge
    50
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Super... danke für die Tips :-)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 18.10.2013, 08:47
  2. Antworten: 0
    Letzter Beitrag: 13.10.2013, 14:33
  3. Meine ersten Schritte mit phpunit
    Von rainman1983 im Forum Testing & Deployment
    Antworten: 7
    Letzter Beitrag: 26.02.2010, 11:52
  4. Zwei Navigationen mit Zend_Navigation
    Von dantan im Forum Core
    Antworten: 1
    Letzter Beitrag: 14.05.2009, 16:52
  5. Workflow-Schritte nacheinander abarbeiten?
    Von buddy_casino im Forum MVC
    Antworten: 2
    Letzter Beitrag: 29.04.2008, 11:15

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •