turk porno porno escort rokettube
Ergebnis 1 bis 8 von 8

Thema: Form\Element\File multiple Zend\Form Object Binding

  1. #1
    Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Form\Element\File multiple Zend\Form Object Binding

    Hallo,

    ich habe ein Formular welches so aufgebaut ist wie in der Doku angegeben, also für jede Entity ein Fieldset mit einer entsprechenden Entity als Object gesetzt.

    Ich habe schon alles mögliche probiert und das ganze Netz zwei Tage lang durchforstet, aber ich komme mit dem $form->setData($data) nicht zurecht. Das Files Array nach dem Upload wird nicht als ArrayCollection in $images der PhotoAlbum Entity gespeichert.

    Ich dachte schon erst an Collections, aber das scheint mir nicht der richtige Weg zu sein für ein Element mit dem Attribut multiple="true".

    Wie handhabt Ihr das bzw. habt Ihr einen Tip wie man sowas am bestens realisiert so das die Object Bindung ordentlich funktioniert?

    Album Entity:
    PHP-Code:
    <?php
    /**
     * This file is part of {PROJECT}
     * Copyright (c) 2013 by ReDraft
     * All rights reserved
     *
     * @category            {PROJECT}
     * @copyright           Copyright (c) 2013, ReDraft (http://redraft.de)
     * @author              Daniel Schumann
     */
     
    namespace Media\Entity;

    use 
    Doctrine\Common\Collections\ArrayCollection;
    use 
    Doctrine\Common\Collections\Collection;
    use 
    Doctrine\ORM\Mapping AS ORM;

    /**
     * PhotoAlbum.php
     *
     * @package             Media\Entity
     * @subpackage          PhotoAlbum
     * @uses
     * @ORM\Entity
     * @ORM\Table(name="photo_album")
     * @property int $id
     * @property string $title
     * @property string $comment
     * @property \DateTime last_update
     * @property \DateTime $created
     */ 
    class PhotoAlbum
    {
        
    /**
         * Primary Identifier
         *
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue
         * @var integer
         * @access protected
         */
        
    protected $id;

        
    /**
         * @ORM\Column(type="string")
         * @var string
         * @access protected
         */
        
    protected $title;

        
    /**
         * @ORM\Column(type="text", nullable=true)
         * @var string
         * @access protected
         */
        
    protected $comment;

        
    /**
         * @ORM\Column(type="datetime")
         * @var \DateTime
         * @access protected
         */
        
    protected $last_update;

        
    /**
         * @ORM\Column(type="datetime")
         * @var \DateTime
         * @access protected
         */
        
    protected $created;

        
    /**
         * @ORM\OneToMany(targetEntity="\Media\Entity\Image", mappedBy="album", cascade={"persist"})
         *
         * @var \Doctrine\Common\Collections\ArrayCollection()
         * @access protected
         */
        
    protected $images;

        public function 
    __construct()
        {
            
    $this->images = new ArrayCollection();
        }

        
    /**
         * @param mixed $_comment
         *
         * @return PhotoAlbum
         */
        
    public function setComment($_comment)
        {
            
    $this->comment $_comment;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getComment()
        {
            return 
    $this->comment;
        }

        
    /**
         * @param mixed $_created
         *
         * @return PhotoAlbum
         */
        
    public function setCreated($_created)
        {
            
    $this->created $_created;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getCreated()
        {
            return 
    $this->created;
        }

        
    /**
         * @param mixed $_id
         *
         * @return PhotoAlbum
         */
        
    public function setId($_id)
        {
            
    $this->id $_id;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getId()
        {
            return 
    $this->id;
        }

        public function 
    setImages(Collection $_images)
        {\
    Zend\Debug\Debug::dump($_images'setimages');
            
    $this->images $_images;
            return 
    $this;
        }

        public function 
    addImages(Image $_image)
        {\
    Zend\Debug\Debug::dump($_image'addImages');
            
    $this->getImages()->add($_image);
            return 
    $this;
        }

        public function 
    removeImages(Collection $_image)
        {\
    Zend\Debug\Debug::dump($_image'removeImages');
            
    $this->getImages()->removeElement($_image);
            return 
    $this;
        }
        
    /**
         * @return \Doctrine\Common\Collections\ArrayCollection
         */
        
    public function getImages()
        {
            return 
    $this->images;
        }

        
    /**
         * @param mixed $_last_update
         *
         * @return PhotoAlbum
         */
        
    public function setLastUpdate($_last_update)
        {
            
    $this->last_update $_last_update;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getLastUpdate()
        {
            return 
    $this->last_update;
        }

        
    /**
         * @param mixed $_title
         *
         * @return PhotoAlbum
         */
        
    public function setTitle($_title)
        {
            
    $this->title $_title;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getTitle()
        {
            return 
    $this->title;
        }
    }
    Image Entity:
    PHP-Code:
    <?php
    /**
     * This file is part of {PROJECT}
     * Copyright (c) 2013 by ReDraft
     * All rights reserved
     *
     * @category            {PROJECT}
     * @copyright           Copyright (c) 2013, ReDraft (http://redraft.de)
     * @author              Daniel Schumann
     */
     
    namespace Media\Entity;

    use 
    Doctrine\ORM\Mapping AS ORM;

    /**
     * Image.php
     *
     * @package             Media\Entity
     * @subpackage          Image
     * @uses
     * @ORM\Entity
     * @ORM\Table(name="images")
     * @property int $id
     * @property string $path
     * @property string $filename
     * @property string $extension
     * @property string $title
     * @property string $comment
     * @property \DateTime $last_update
     * @property \DateTime $created
     */ 
    class Image
    {
        
    /**
         * Primary Identifier
         *
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue
         * @var integer
         * @access protected
         */
        
    public $id;

        
    /**
         * @ORM\ManyToOne(targetEntity="Media\Entity\PhotoAlbum", inversedBy="images")
         * @ORM\JoinColumn(name="album_id", referencedColumnName="id")
         */
        
    public $album;

        
    /**
         * @ORM\Column(type="string")
         * @var string
         * @access protected
         */
        
    public $path;

        
    /**
         * @ORM\Column(type="string")
         * @var string
         * @access protected
         */
        
    public $filename;

        
    /**
         * @ORM\Column(type="string")
         * @var string
         * @access protected
         */
        
    public $extension;

        
    /**
         * @ORM\Column(type="string")
         * @var string
         * @access protected
         */
        
    public $title;

        
    /**
         * @ORM\Column(type="text")
         * @var string
         * @access protected
         */
        
    public $comment;

        
    /**
         * @ORM\Column(type="datetime")
         * @var \DateTime
         * @access protected
         */
        
    public $last_update;

        
    /**
         * @ORM\Column(type="datetime")
         * @var \DateTime
         * @access protected
         */
        
    public $created;

        
    /**
         * @param mixed $_album
         *
         * @return Image
         */
        
    public function setAlbum(PhotoAlbum $_album)
        {
            
    $this->album $_album;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getAlbum()
        {
            return 
    $this->album;
        }

        
    /**
         * @param mixed $_comment
         *
         * @return Image
         */
        
    public function setComment($_comment)
        {
            
    $this->comment $_comment;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getComment()
        {
            return 
    $this->comment;
        }

        
    /**
         * @param mixed $_created
         *
         * @return Image
         */
        
    public function setCreated($_created)
        {
            
    $this->created $_created;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getCreated()
        {
            return 
    $this->created;
        }

        
    /**
         * @param mixed $_extension
         *
         * @return Image
         */
        
    public function setExtension($_extension)
        {
            
    $this->extension $_extension;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getExtension()
        {
            return 
    $this->extension;
        }

        
    /**
         * @param mixed $_filename
         *
         * @return Image
         */
        
    public function setFilename($_filename)
        {
            
    $this->filename $_filename;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getFilename()
        {
            return 
    $this->filename;
        }

        
    /**
         * @param mixed $_id
         *
         * @return Image
         */
        
    public function setId($_id)
        {
            
    $this->id $_id;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getId()
        {
            return 
    $this->id;
        }

        
    /**
         * @param mixed $_last_update
         *
         * @return Image
         */
        
    public function setLastUpdate($_last_update)
        {
            
    $this->last_update $_last_update;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getLastUpdate()
        {
            return 
    $this->last_update;
        }

        
    /**
         * @param mixed $_path
         *
         * @return Image
         */
        
    public function setPath($_path)
        {
            
    $this->path $_path;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getPath()
        {
            return 
    $this->path;
        }

        
    /**
         * @param mixed $_title
         *
         * @return Image
         */
        
    public function setTitle($_title)
        {
            
    $this->title $_title;

            return 
    $this;
        }

        
    /**
         * @return mixed
         */
        
    public function getTitle()
        {
            return 
    $this->title;
        }

        public function 
    getFilePath()
        {
            return 
    $this->getPath() . '/' $this->getFilename() . '.' $this->getExtension();
        }
    }
    Geändert von strolch00 (21.08.2013 um 11:37 Uhr)

  2. #2
    Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Album Fieldset:
    PHP-Code:
    <?php
    /**
     * This file is part of {PROJECT}
     * Copyright (c) 2013 by ReDraft
     * All rights reserved
     *
     * @category            {PROJECT}
     * @copyright           Copyright (c) 2013, ReDraft (http://redraft.de)
     * @author              Daniel Schumann
     */

    namespace Media\Form;

    use 
    Doctrine\Common\Persistence\ObjectManager;
    use 
    DoctrineModule\Stdlib\Hydrator\DoctrineObject;
    use 
    Media\Entity\PhotoAlbum;
    use 
    ReDraft\Form\FormInterface;
    use 
    Zend\Form\Fieldset;
    use 
    Zend\InputFilter\InputFilterProviderInterface;


    /**
     * PhotoAlbumFieldset.php
     *
     * @package             Media\Form
     * @subpackage          PhotoAlbumFieldset
     * @uses
     */
    class PhotoAlbumFieldset extends Fieldset implements InputFilterProviderInterface
    {

        function 
    __construct(ObjectManager $_objectManager)
        {
            
    parent::__construct('photo-album');
            
    $this->setHydrator(new DoctrineObject($_objectManager))
                ->
    setObject(new PhotoAlbum());

            
    $this->add(
                array(
                     
    'type' => 'Zend\Form\Element\Hidden',
                     
    'name' => FormInterface::ELEMENT_ID,
                )
            );

            
    $this->add(
                array(
                     
    'type'       => 'Zend\Form\Element\Text',
                     
    'name'       => 'title',
                     
    'options'    => array(
                         
    'label' => 'Titel'
                     
    ),
                     
    'attributes' => array(
                         
    'required' => 'required',
                     )
                )
            );

            
    $this->add(
                array(
                     
    'type'    => 'Zend\Form\Element\Textarea',
                     
    'name'    => 'comment',
                     
    'options' => array(
                         
    'label' => 'Kommentar'
                     
    )
                )
            );
        }

        
    /**
         * Should return an array specification compatible with
         * {@link Zend\InputFilter\Factory::createInputFilter()}.
         *
         * @return array
         */
        
    public function getInputFilterSpecification()
        {
            return array(
                
    'title'   => array(
                    
    'required'   => TRUE,
                    
    'filters'    => array(
                        array(
    'name' => 'StripTags'),
                        array(
    'name' => 'StringTrim'),
                    ),
                    
    'validators' => array(),
                ),
                
    'comment' => array(
                    
    'required'   => FALSE,
                    
    'filters'    => array(
                        array(
    'name' => 'StripTags'),
                        array(
    'name' => 'StringTrim'),
                    ),
                    
    'validators' => array(),
                )
            );
        }
    }
    Image Fieldset:
    PHP-Code:
    <?php
    /**
     * This file is part of {PROJECT}
     * Copyright (c) 2013 by ReDraft
     * All rights reserved
     *
     * @category            {PROJECT}
     * @copyright           Copyright (c) 2013, ReDraft (http://redraft.de)
     * @author              Daniel Schumann
     */

    namespace Media\Form;

    use 
    Doctrine\Common\Persistence\ObjectManager;
    use 
    DoctrineModule\Stdlib\Hydrator\DoctrineObject;
    use 
    Media\Entity\Image;
    use 
    ReDraft\Form\FormInterface;
    use 
    Zend\Form\Element\Collection;
    use 
    Zend\Form\Fieldset;
    use 
    Zend\InputFilter\InputFilterProviderInterface;

    /**
     * ImageFieldset.php
     *
     * @package             Media\Form
     * @subpackage          ImageFieldset
     * @uses
     */
    class ImageFieldset extends Fieldset implements InputFilterProviderInterface
    {
        function 
    __construct(ObjectManager $_objectManager)
        {
            
    parent::__construct('images');
            
    $this->setHydrator(new DoctrineObject($_objectManager))
                ->
    setObject(new Image());

            
    $this->add(
                array(
                     
    'type' => 'Zend\Form\Element\Hidden',
                     
    'name' => FormInterface::ELEMENT_ID,
                )
            );

            
    $this->add(
                array(
                     
    'type'       => 'Zend\Form\Element\File',
                     
    'name'       => 'files',
                     
    'options'    => array(
                         
    'label' => 'Bilder',
                     ),
                     
    'attributes' => array(
                         
    'multiple' => TRUE,
                         
    'required' => 'required',
                     )
                )
            );
        }

        
    /**
         * Should return an array specification compatible with
         * {@link Zend\InputFilter\Factory::createInputFilter()}.
         *
         * @return array
         */
        
    public function getInputFilterSpecification()
        {
            return array(
                
    FormInterface::ELEMENT_ID => array(
                    
    'required' => FALSE,
                ),
                
    'files' => array(
                    
    'required'   => TRUE,
                    
    'filters'    => array(
                        array(
                            
    'name'    => 'Zend\Filter\File\RenameUpload',
                            
    'options' => array(
                                
    'target'               => PUBLIC_DIRECTORY '/uploads/images/',
                                
    'randomize'            => TRUE,
                                
    'use_upload_name'      => TRUE,
                                
    'use_upload_extension' => TRUE,
                            )
                        )
                    ),
                    
    'validators' => array(
                        array(
                            
    'name'    => 'Zend\Validator\File\MimeType',
                            
    'options' => array(
                                
    'image/png''image/x-png',
                                
    'image/jpg''image/jpeg'
                            
    )
                        )
                    ),
                )
            );
        }
    }
    NewPhotoAlbum Form:
    PHP-Code:
    <?php
    /**
     * This file is part of {PROJECT}
     * Copyright (c) 2013 by ReDraft
     * All rights reserved
     *
     * @category            {PROJECT}
     * @copyright           Copyright (c) 2013, ReDraft (http://redraft.de)
     * @author              Daniel Schumann
     */

    namespace Media\Form;

    use 
    DoctrineModule\Persistence\ObjectManagerAwareInterface;
    use 
    DoctrineModule\Stdlib\Hydrator\DoctrineObject;
    use 
    Media\Entity\Image;
    use 
    Media\Entity\PhotoAlbum;
    use 
    ReDraft\Form\AbstractForm;
    use 
    ReDraft\Stdlib\Common\DoctrineObjectManagerTrait;
    use 
    Zend\Form\Element\Collection;

    /**
     * NewAlbumForm.php
     *
     * @package             Media\Form
     * @subpackage          NewAlbumForm
     * @uses
     */
    class NewAlbumForm extends AbstractForm implements ObjectManagerAwareInterface
    {
        use 
    DoctrineObjectManagerTrait;

        public function 
    init()
        {
            
    $this->setName('photo-album')
                ->
    setHydrator(new DoctrineObject($this->getObjectManager()))
                ->
    setObject(new PhotoAlbum());

            
    $fieldset = new PhotoAlbumFieldset($this->getObjectManager());
            
    $fieldset->setUseAsBaseFieldset(TRUE)
                ->
    setLabel('neues Album');

            
    $file = new ImageFieldset($this->getObjectManager());
            
    $file->setName('images')->setLabel('Fotos');
            
    $fieldset->add($file);

            
    // add elements
            
    $this->add($fieldset);

            
    $this->finalize();
        }
    }
    und schließlich die Action:
    PHP-Code:
        public function createAction()
        {
            
    // creates an album with the form data and redirect on success
            // to addImagesAction and upload the images
            
    $form $this->getForm('Media\Form\NewAlbumForm');
            
    $entity = new PhotoAlbum();
            
    $form->bind($entity);

            if(
    $this->getRequest()->isPost()) {
                
    // Make certain to merge the files info!
                
    $data array_merge_recursive(
                    
    $this->getRequest()->getPost()->toArray(),
                    
    $this->getRequest()->getFiles()->toArray()
                );
                \
    Zend\Debug\Debug::dump($data__CLASS__ '[' __FUNCTION__ '] ON (' __LINE__ ')');
                
    $form->setData($data);
                if(
    $form->isValid()) {
                    \
    Zend\Debug\Debug::dump($entity__CLASS__ '[' __FUNCTION__ '] ON (' __LINE__ ')');
                }
            }
            return 
    $this->getView(array('form' => $form));
        } 
    Ich finde nirgendwo im Netz Beispiele mit verschachtelten Entity´s und Multiple Input Feldern, sondern nur die Collection variante, aber das ist in dem Fall keine Option.

    Vielen Dank ich bin schon fast am durchdrehen

  3. #3
    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 strolch00 Beitrag anzeigen
    PHP-Code:
    class NewAlbumForm extends AbstractForm implements ObjectManagerAwareInterface
    {
        use 
    DoctrineObjectManagerTrait;

        public function 
    init()
        {
            
    $this->setName('photo-album')
                ->
    setHydrator(new DoctrineObject($this->getObjectManager()))
                ->
    setObject(new PhotoAlbum());

            
    $fieldset = new PhotoAlbumFieldset($this->getObjectManager());
            
    $fieldset->setUseAsBaseFieldset(TRUE)
                ->
    setLabel('neues Album');

            
    $file = new ImageFieldset($this->getObjectManager());
            
    $file->setName('images')->setLabel('Fotos');
            
    $fieldset->add($file);

            
    // add elements
            
    $this->add($fieldset);

            
    $this->finalize();
        }

    Ich habe es nur mal schnell überflogen und wenn ich es richtig verstanden habe, dann gehören die Bilder in das Fotoalbum. Daher teste mal folgendes: setze das „Fieldset“ für die Bilder in das „Fieldset“ des Fotoalbums. Du hast zwar „setUseAsBaseFieldset“ verwendet, aber ich hatte in der Vergangenheit (ältere Version) mal Probleme damit.

    Über eine kurze Rückmeldung, ob mein Schnellschuss etwas bringt, würde ich mich freuen.

    (Ich würde auch nicht zwei Tage Google bemühen, sondern einfach mal den Debugger anwerfen, dann sieht man sogar was intern alles abläuft.)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  4. #4
    Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hallo Kaiuwe,

    das mache ich doch bereits mit
    PHP-Code:
    $fieldset->add($file); 
    Ich habe natürlich auch den Debugger angeworfen, allerdings wurde ich dadurch nicht so ganz schlau draus wie doctrine intern arbeitet. Oder wie meinst Du das mit Debugger anwerfen?

    *edit
    Ich habe das aber schon richtig verstanden das die Form\Collection´s für wiederholte input Elemente gedacht sind. Ich kann mir nicht vorstellen das ich die Images Collection nach dem validieren per Hand erstellen muss.
    Geändert von strolch00 (21.08.2013 um 16:52 Uhr)

  5. #5
    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 strolch00 Beitrag anzeigen
    das mache ich doch bereits mit
    PHP-Code:
    $fieldset->add($file); 
    Stimmt, habe ich beim nochmaligen Lesen dann auch gesehen.

    Zitat Zitat von strolch00 Beitrag anzeigen
    Ich habe natürlich auch den Debugger angeworfen, allerdings wurde ich dadurch nicht so ganz schlau draus wie doctrine intern arbeitet.
    Wieso „Doctrine“? Nicht so weit hinten anfangen. Prüfe ob von „Zend\Form“ überhaupt die Daten an die entsprechenden Methoden („PhotoAlbum::setImages()“) weitergegeben werden. (Du hast zwar dort schon „Zend\Debug“ verwendet, aber uns nicht verraten, ob da etwas ankommt.)

    Zitat Zitat von strolch00 Beitrag anzeigen
    Oder wie meinst Du das mit Debugger anwerfen?
    Mit Debugger meine ich natürlich „Xdebug“ & Co. + deine IDE.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  6. #6
    Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Da hast Du natürlich Recht, das habe ich ganz vergessen im Eifer des Gefecht´s.

    Hiersind die Debug Ausgaben:
    Code:
    addImages object(Doctrine\Common\Collections\ArrayCollection)#568 (1) { 
      ["_elements":"Doctrine\Common\Collections\ArrayCollection":private] => array(0) { } 
    }
    Code:
    removeImages object(Doctrine\Common\Collections\ArrayCollection)#567 (1)  {
      ["_elements":"Doctrine\Common\Collections\ArrayCollection":private] => array(0) { } 
    }

    Hier die gefüllte Entity:
    Code:
    object(Media\Entity\PhotoAlbum)#432 (6) { 
      ["id":protected] => string(0) ""   
      ["title":protected] => string(4) "bvcx" 
      ["comment":protected] => string(0) ""   
      ["last_update":protected] => NULL   
      ["created":protected] => NULL   
      ["images":protected]  => object(Doctrine\Common\Collections\ArrayCollection)#433 (1) { 
        ["_elements":"Doctrine\Common\Collections\ArrayCollection":private]  => array(1) { 
          [0] =>  object(Doctrine\Common\Collections\ArrayCollection)#568 (1) { 
            ["_elements":"Doctrine\Common\Collections\ArrayCollection":private] => array(0) {         }       
          }     
        }   
      } 
    }
    Die setImages wird gar nicht aufgerufen, was sehr verwundlich ist. Das Post Array schaut wie folgt aus:
    Code:
    array(4) {
      ["photo-album"] => array(4) {
        ["id"] => string(0) ""     
        ["title"] => string(4) "bvcx"     
        ["comment"] => string(0) ""    
        ["images"] => array(2) {       
          ["id"] => string(0) ""      
          ["files"] => array(4) {         
            [0] => array(5) {          
              ["name"] => string(7) "007.png"           
              ["type"] => string(9) "image/png"           
              ["tmp_name"] => string(24) "C:\xampp\tmp\php10AC.tmp"           
              ["error"] => int(0)           
              ["size"] => int(987812)         
            }         
            [1] => array(5) {          
              ["name"] => string(7) "009.png"           
              ["type"] => string(9) "image/png"           
              ["tmp_name"] => string(24) "C:\xampp\tmp\php10AD.tmp"           
              ["error"] => int(0)           
              ["size"] => int(959343)        
            }         
            [2] => array(5) {           
              ["name"] => string(7) "037.png"           
              ["type"] => string(9) "image/png"           
              ["tmp_name"] => string(24) "C:\xampp\tmp\php10BD.tmp"          
              ["error"] => int(0)           
              ["size"] => int(1088413)         
            }         
            //...
          }
        }
      }
      ["submit"] => string(2) "Go"   
      ["id"] => string(0) ""  
      ["token"] => string(32) "52dfde2e0e6d5bd0947fd77206e6edbd" 
    }

  7. #7
    Benutzer
    Registriert seit
    18.12.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Guten morgen,

    also Update meiner seits:
    Ich habe es nun doch mit einer Collection unterhalb des Album Fieldset´s gelöst, so hatte ich es schon einmal ur hatte mich da die Post Array Strucktur gestört, aber letztendlich bin ich zum Schluß gekommen das anders die Daten an Doctrine nicht richtig übergeben werden.

    Nun Stellt sich mir die Frage wie fülle ich die Entity Image richtig? so wie ich das sehe habe ich zwei Möglichkeiten:
    1. Ich schreibe eine Methode innerhalb der Image Entity "setMultipleFiles" welche mehrere Image Entity´s generiert mit den richtigen Eigenschaften.
    2. Oder warscheinlich der richtigere Weg, ich schreibe die das Image Fieldset einen neue Hydrator Strategie welche mit multipleInputfeldern umgehen kann.
    Vielleicht weiß jemand an dieser Stelle ob es nicht schon soetwas gibt.

    Zur verdeutlichung meines Problems nochmal die Post Strucktur:
    Code:
    array(3) {
      ["photo-album"] => array(4) {     
        ["id"] => string(0) ""     
        ["title"] => string(3) "bgf"     
        ["comment"] => string(0) ""     
        ["images"] => array(1) {       
          [0] => array(1) {         
            ["multipleFiles"] => array(1) {           
              [0] => array(5) {             
                ["name"] => string(7) "007.png"             
                ["type"] => string(9) "image/png"             
                ["tmp_name"] => string(24) "C:\xampp\tmp\php8CA8.tmp"             
                ["error"] => int(0)             
                ["size"] => int(987812)           
              }         
            }       
          }     
        }   
      }   
      ["token"] => string(32) "a32a68bd4b74e1be52511b1e72ffc8a2"   
      ["submit"] => string(4) "Send" 
    }
    und die fertige Entity:
    Code:
    Media\Controller\PhotoAlbumsController[createAction] ON (74) object(Media\Entity\PhotoAlbum)#438 (6) {
      ["id":protected] => string(0) ""
      ["title":protected] => string(3) "bgf"
      ["comment":protected] => string(0) ""
      ["last_update":protected] => NULL
      ["created":protected] => NULL
      ["images":protected] => object(Doctrine\Common\Collections\ArrayCollection)#439 (1) {
        ["_elements":"Doctrine\Common\Collections\ArrayCollection":private] => array(1) {
          [0] => object(Media\Entity\Image)#433 (9) {
            ["id"] => NULL
            ["album"] => NULL
            ["path"] => NULL
            ["filename"] => NULL
            ["extension"] => NULL
            ["title"] => NULL
            ["comment"] => NULL
            ["last_update"] => NULL
            ["created"] => NULL
          }
        }
      }
    }
    Die Strucktur schaut meiner Meinung nach richtig aus nur werden logischerweise die Values des Files Inputs nicht so übergeben wie es sein müsste. In die Entity werden Sie richtig übergeben wie man hier sehen kann.
    Code:
    MultipleFiles array(1) {
      [0] => array(5) {
        ["name"] => string(7) "007.png"
        ["type"] => string(9) "image/png"
        ["tmp_name"] => string(80) "C:\xampp\htdocs_pferde-harmonie\public_html/uploads/images/007_5215d641c2f7c.png"
        ["error"] => int(0)
        ["size"] => int(987812)
      }
    }

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

    Standard

    Hallo zusammen,

    ich bin neu in diesem Forum und arbeite momentan selbst an einem Praktikumsprojekt mit dem Zend Framwork 2. Dabei stehe ich eigentlich vor so ziemlich genau dem gleichen Problem wie strolch00 und bin nach langer Internet-Recherche auch auf diesen Beitrag gestoßen.

    Daher meine Frage: Hat schon jemand eine Lösung zu dieser Problemstellung gefunden?
    Meine bisherige (sehr unschöne) Lösung besteht darin, die Collection Items von Hand aus der DB zu laden und zu bearbeiten, was aber meiner Meinung nach nicht im Sinne des Erfinders sein kann.

    Wenn also jemand eine gute Lösung zu diesem Problem anbieten könnte, würde auch ich mich sehr freuen

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 20.12.2012, 20:39
  2. Antworten: 1
    Letzter Beitrag: 20.12.2012, 20:34
  3. Zend Form File Upload File-Rename
    Von Dunkelziffer im Forum Formulare
    Antworten: 22
    Letzter Beitrag: 19.08.2011, 11:16
  4. Zend Form / File Uploads mit 1.8 pre
    Von tsk im Forum Formulare
    Antworten: 4
    Letzter Beitrag: 12.04.2009, 19:21
  5. Zend Form: Text Element mit[]
    Von foob4r im Forum Formulare
    Antworten: 18
    Letzter Beitrag: 07.11.2008, 21:24

Lesezeichen

Berechtigungen

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