turk porno porno escort rokettube
Ergebnis 1 bis 2 von 2

Thema: ZF2 Doctrine Form bind änderungen in Datenbank speichern.

  1. #1
    Neuer Benutzer
    Registriert seit
    27.10.2012
    Beiträge
    19
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard ZF2 Doctrine Form bind änderungen in Datenbank speichern.

    Hallo zusammen,

    ich habe leider mal wieder ein kleines Problem mit ZF2 und Doctrine. Ich habe gemäß der Webseite Using Doctrine 2 in Zend Framework 2 | The Blog of Jason Grimes eingebunden und ein Entity + Form + Controller erstellt und kann auch problemlos neue Datensätze hinzufügen. Jedoch wenn ich ein bestehenden Datensatz bearbeiten möchte funktioniert das vorgehen leider nicht. Die Daten werden zwar übergeben jedoch landen nicht im Entity um diese dann Speichern zu können.

    Hier mein Script:

    Entity
    PHP-Code:
    <?php
    namespace NTROrgMgmtSystemBasic\Entity;

    use 
    Doctrine\ORM\Mapping as ORM;
    use 
    Zend\InputFilter\InputFilter;
    use 
    Zend\InputFilter\Factory as InputFactory;
    use 
    Zend\InputFilter\InputFilterAwareInterface;
    use 
    Zend\InputFilter\InputFilterInterface;

    /**
     * Test Tabelle
     * @ORM\Entity
     * @ORM\Table(name="test");
     * @property string $vorname
     * @property string $nachname
     * @property int $id
     */

    class Test implements InputFilterAwareInterface
    {
        protected 
    $inputFilter;
        
        
    /**
         * @ORM\id
         * @ORM\Column(type="integer");
         * @ORM\GeneratedValue(strategy="AUTO");
         */
        
    protected $id;
        
        
    /**
         * @ORM\Column(type="string");
         */
        
    protected $vorname;
        
        
    /**
         * @ORM\Column(type="string");
         */
        
    protected $nachname;
        
        
    /**
         * Magic getter to expose protected properties
         * 
         * @param string $property
         * @param mixed
         */
        
        
    public function __get($property)
        {
            return 
    $this->$property;
        }
        
        
    /**
         * Magic setter to save protected properties
         * @param string $property 
         * @param mixed $value
         */
        
    public function __set($property$value)
        {
            
    $this->$property $value;
        }
        
        public function 
    getId()
        {
            return 
    $this->id;
        }
        
        public function 
    setId($id)
        {
            
    $this->id $id;
        }
        
        public function 
    getVorname()
        {
            return 
    $this->vorname;
        }
        
        public function 
    setVorname($vorname)
        {
            
    $this->vorname $vorname;
        }
        
        public function 
    getNachname()
        {
            return 
    $this->nachname;
        }
        
        public function 
    setNachname($nachname)
        {
            
    $this->nachname $nachname;
        }


        
    /**
         * Convert the object to an array
         */
        
    public function getArrayCopy()
        {
            return 
    get_object_vars($this);
        }
        
        
    /**
         * Popukate from a array
         * 
         * @param array $data 
         */
        
        
    public function populate($data = array())
        {
            
    $this->id               $data['id'];
            
    $this->vorname          $data['vorname'];
            
    $this->nachname         $data['nachname'];
        }

        
        public function 
    setInputFilter(InputFilterInterface $inputFilter) {
            throw new \
    Exception('Not used');
        }
        
        public function 
    getInputFilter() {
            if (
    $this->inputFilter) {
                
    $inputFilter = new InputFilter();
                
                
    $factory = new InputFactory();
                
                
    $inputFilter->add($factory->createInput(array(
                    
    'name'      => 'id',
                    
    'required'  => true,
                    
    'filters'   => array(
                        array(
    'name' => 'Int'),
                    ),
                )));
                
                
    $inputFilter->add($factory->createInput(array(
                    
    'name'      => 'vorname',
                    
    'required'  => true,
                    
    'filters'   => array(
                        array(
    'name' => 'StripTags'),
                        array(
    'name' => 'StringTrim'),
                    ),
                    
    'validators' => array(
                        array(
                            
    'name'          => 'StringLength',
                            
    'options'       => array(
                                
    'encoding'   => 'UTF-8',
                                
    'min'        => 1,
                                
    'max'        => 100,
                            ),
                        ),
                    ),
                )));
                
                
    $inputFilter->add($factory->createInput(array(
                    
    'name'      => 'nachname',
                    
    'required'  => true,
                    
    'filters'   => array(
                        array(
    'name' => 'StripTags'),
                        array(
    'name' => 'StringTrim'),
                    ),
                    
    'validators' => array(
                        array(
                            
    'name'         => 'StringLength',
                            
    'options'      => array(
                                
    'encoding'  => 'UTF-8',
                                
    'min'       => 1,
                                
    'max'       => 255,
                            ),
                        ),
                    ),
                ))); 
                
                
    $this->inputFilter $inputFilter;
            }
            
            return 
    $this->inputFilter;
        }
    }
    ?>
    Form:

    PHP-Code:
    <?php
    namespace NTROrgMgmtSystemBasic\Form;

    use 
    Zend\Form\Form;
    use 
    Zend\Form\Element;

    class 
    Test extends Form
    {
        public function 
    __construct() {
            
    parent::__construct("test");
            
    $this->setAttribute('action''test');
            
    $this->setAttribute('method''post');
            
    //$this->setInputFilter(new \Zend\InputFilter\InputFilter());
            
            
    $this->add(array(
                
    'name' => 'id',
                
    'attributes' => array(
                    
    'type' => 'hidden',
                ),
            ));
            
            
    $this->add(array(
                
    'name' => 'vorname',
                
    'options' => array(
                    
    'label' => 'Vorname:',
                ),
                
    'attributes' => array(
                    
    'type' => 'text',
                ),
            ));
            
            
    $this->add(array(
                
    'name' => 'nachname',
                
    'options' => array(
                    
    'label' => 'Nachname',
                ),
                
    'attributes' => array(
                    
    'type' => 'text',
                ),
            ));
            
            
    $this->add(array(
                
    'name' => 'security',
                
    'type' => 'Zend\Form\Element\Csrf',
            ));
            
            
    $this->add(array(
                
    'name' => 'submit',
                
    'attributes' => array(
                    
    'type' => 'submit',
                    
    'value' => 'go',
                    
    'id' => 'submitbutton',
                ),
            ));
            
            
            
        }
    }
    ?>
    Controller:
    PHP-Code:
    public function TestAction()
        {
            
    $test $this->getEntityManager()->find('NTROrgMgmtSystemBasic\Entity\Test'1);
            
            
    $form = new \NTROrgMgmtSystemBasic\Form\Test();
            
    $form->setBindOnValidate(false);
            
    $form->bind($test);
            
            if (
    $this->getRequest()->isPost())
            {
                
    $form->setData($this->getRequest()->getPost());
                
                if (
    $form->isValid()) {
                    
    $form->bindValues();
                    
                    
    $this->getEntityManager()->flush();
                    return new 
    ViewModel(array(
                        
    'form' => $form,
                    ));
                } else {
                    return new 
    ViewModel(array(
                        
    'form' => $form,
                    ));
                }
            } else {
                return new 
    ViewModel(array(
                    
    'form' => $form,
                ));
            }
        } 
    ich hoffe einer von euch kann mir helfen, wie ich die Daten erfolgreich abspeichern kann.

    Danke.

    Gruß

    Tommy2002

  2. #2
    Neuer Benutzer
    Registriert seit
    27.10.2012
    Beiträge
    19
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Rotes Gesicht Fehler gefunden.

    Ich habe mein Fehler gefunden.

    Beim Entity habe ich unter getInputFilter die IF-Abfrage falsch geschrieben

    Fehler:

    PHP-Code:
    if ($this->inputFilter) { 
    Richtig:

    PHP-Code:
    if (!$this->inputFilter) { 

    Kompletter Quellcode:

    PHP-Code:
     <?php
    namespace NTROrgMgmtSystemBasic\Entity;

    use 
    Doctrine\ORM\Mapping as ORM;
    use 
    Zend\InputFilter\InputFilter;
    use 
    Zend\InputFilter\Factory as InputFactory;
    use 
    Zend\InputFilter\InputFilterAwareInterface;
    use 
    Zend\InputFilter\InputFilterInterface;

    /**
     * Test Tabelle
     * @ORM\Entity
     * @ORM\Table(name="test");
     * @property string $vorname
     * @property string $nachname
     * @property int $id
     */

    class Test implements InputFilterAwareInterface
    {
        protected 
    $inputFilter;
        
        
    /**
         * @ORM\id
         * @ORM\Column(type="integer");
         * @ORM\GeneratedValue(strategy="AUTO");
         */
        
    protected $id;
        
        
    /**
         * @ORM\Column(type="string");
         */
        
    protected $vorname;
        
        
    /**
         * @ORM\Column(type="string");
         */
        
    protected $nachname;
        
        
    /**
         * Magic getter to expose protected properties
         * 
         * @param string $property
         * @param mixed
         */
        
        
    public function __get($property)
        {
            return 
    $this->$property;
        }
        
        
    /**
         * Magic setter to save protected properties
         * @param string $property 
         * @param mixed $value
         */
        
    public function __set($property$value)
        {
            
    $this->$property $value;
        }
        
        public function 
    getId()
        {
            return 
    $this->id;
        }
        
        public function 
    setId($id)
        {
            
    $this->id $id;
        }
        
        public function 
    getVorname()
        {
            return 
    $this->vorname;
        }
        
        public function 
    setVorname($vorname)
        {
            
    $this->vorname $vorname;
        }
        
        public function 
    getNachname()
        {
            return 
    $this->nachname;
        }
        
        public function 
    setNachname($nachname)
        {
            
    $this->nachname $nachname;
        }


        
    /**
         * Convert the object to an array
         */
        
    public function getArrayCopy()
        {
            return 
    get_object_vars($this);
        }
        
        
    /**
         * Popukate from a array
         * 
         * @param array $data 
         */
        
        
    public function populate($data = array())
        {
            
    $this->id               $data['id'];
            
    $this->vorname          $data['vorname'];
            
    $this->nachname         $data['nachname'];
        }

        
        public function 
    setInputFilter(InputFilterInterface $inputFilter) {
            throw new \
    Exception('Not used');
        }
        
        public function 
    getInputFilter() {
            if (!
    $this->inputFilter) {
                
    $inputFilter = new InputFilter();
                
                
    $factory = new InputFactory();
                
                
    $inputFilter->add($factory->createInput(array(
                    
    'name'      => 'id',
                    
    'required'  => true,
                    
    'filters'   => array(
                        array(
    'name' => 'Int'),
                    ),
                )));
                
                
    $inputFilter->add($factory->createInput(array(
                    
    'name'      => 'vorname',
                    
    'required'  => true,
                    
    'filters'   => array(
                        array(
    'name' => 'StripTags'),
                        array(
    'name' => 'StringTrim'),
                    ),
                    
    'validators' => array(
                        array(
                            
    'name'          => 'StringLength',
                            
    'options'       => array(
                                
    'encoding'   => 'UTF-8',
                                
    'min'        => 1,
                                
    'max'        => 100,
                            ),
                        ),
                    ),
                )));
                
                
    $inputFilter->add($factory->createInput(array(
                    
    'name'      => 'nachname',
                    
    'required'  => true,
                    
    'filters'   => array(
                        array(
    'name' => 'StripTags'),
                        array(
    'name' => 'StringTrim'),
                    ),
                    
    'validators' => array(
                        array(
                            
    'name'         => 'StringLength',
                            
    'options'      => array(
                                
    'encoding'  => 'UTF-8',
                                
    'min'       => 1,
                                
    'max'       => 255,
                            ),
                        ),
                    ),
                ))); 
                
                
    $this->inputFilter $inputFilter;
            }
            
            return 
    $this->inputFilter;
        }
    }
    ?>
    Danke.

    Gruß

    Tommy2002

    PS: Der Thread kann geschlossen werden.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 09.06.2013, 18:51
  2. Antworten: 1
    Letzter Beitrag: 20.12.2012, 20:34
  3. Dojo Grid/Form speichern
    Von patrick im Forum Javascript + RIA
    Antworten: 6
    Letzter Beitrag: 10.06.2010, 16:45
  4. Antworten: 3
    Letzter Beitrag: 22.02.2010, 16:00
  5. Dateinamen in Datenbank speichern
    Von HeinzHarald im Forum Formulare
    Antworten: 1
    Letzter Beitrag: 25.10.2009, 14:28

Stichworte

Lesezeichen

Berechtigungen

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