2012-11-13 10 views
5

सोनाटा एडमिन में, मैं sonata_type_collection में अपलोड और पूर्वावलोकन तस्वीर फ़ाइल का उपयोग करना चाहता हूं।सोनाटाएडमिनबंडल sonata_type_collection के साथ और छवि अपलोड करें

मेरी व्यवस्थापक/ItemAdmin.php में:

class ItemAdmin extends Admin 
{ 

    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper 
      ->add('title') 
      ->with('Photos') 
      ->add('pictures', 'sonata_type_collection', array(
       'label' => 'Pictures', 
       'by_reference' => false, 
       'required' => false, 
       ), array(
       'edit' => 'inline', 
       'inline' => 'table', 
       'sortable' => 'id' 
      )) 
      ->end() 
     ; 
    } 

मेरे व्यवस्थापक/ItemPictureAdmin.php:

class ItemPictureAdmin extends Admin { 

    protected function configureFormFields(FormMapper $formMapper) { 
     $obj = $this->getSubject(); 

     $formBuilder = $formMapper->getFormBuilder(); 

     if(is_object($obj) && $obj->getPicture()) 
     { 
      $formMapper 
      ->add('picturePreview', 'image_preview', array(
       'required' => false, 
       'property_path' => false, 
       'upload_dir' => '/uploads/picture/', 
       'file_name' => $obj->getPicture() 
      )); 
     } 
     $formMapper->add('pictureFile', 'file', array('label' => 'Pic')); 
    } 

प्रकार "image_preview" एक नए प्रकार मैं एक साधारण टेम्पलेट टहनी के साथ बनाया है तस्वीर दिखाने के लिए।

पूर्वावलोकन: http://i.stack.imgur.com/AC0ih.png

अंक 1: मैं दो दो विभिन्न साथ डेटाबेस में दर्ज चित्रों फ़ाइलें चित्र है, लेकिन सूची में, यह पहली ही प्रदर्शित करता है।

समस्या 2: चित्र को अपडेट करना संभव नहीं है ... मुझे रिकॉर्ड को हटाना होगा और फिर एक नई फ़ाइल अपलोड करनी होगी।

+0

समस्या 2: आप 'ItemPictureAdmin' में एक' preUpdate' विधि बनाना चाहिए? यहां एक उदाहरण दिया गया है: [सिम्फनी 2, सोनाटा एडमिन बंडल और फ़ाइल अपलोड] (http://blog.code4hire.com/2011/08/symfony2-sonata-admin-bundle-and-file-uploads/) – AndreaS

+0

पहले मुद्दे के लिए , यह सोनाटा में एक बग अभी तक तय नहीं है, कि एम्बेडेड व्यवस्थापक में '$ this-> getSubject()' हमेशा संबंध से पहली वस्तु प्राप्त करता है। इसके लिए एक अस्थायी समाधान है। इसे देखें: http://stackoverflow.com/questions/18106502/how-to-get-child-object-in-embedded-admin-class-in-sonata-admin/22815329#22815329 – hombee

उत्तर

0

मैं खुद को समस्या 1 पर टक्कर लगी। मैंने पाया कि हर संभव समाधान की कोशिश की, लेकिन कुछ भी काम नहीं किया। मैंने अपने कुछ समाधानों की कोशिश की और एक अच्छा था।
क्या मैंने किया:

  • मैं बच्चे इकाई के सूचकांक सत्र में बचाया (अपने मामले ItemPictureAdmin में) और जब मैं एक इकाई की जरूरत है, मैं सत्र से सूचकांक लेने के लिए और साथ तत्व मिलेगा मूल इकाई में सूची से वह सूचकांक।

  • सबसे पहले मैं सत्र सूचकांक 0 में बचाने के लिए और ItemPictureAdmin में मैं सूचकांक 0

  • इस के बाद साथ ItemPictureAdmin के अपने मूल सूची तक पहुँच, मैं सत्र में सूचकांक वृद्धि की जाती। सूची के सभी तत्व मिलने के बाद, मैंने सत्र पैरामीटर को हटा दिया जो इंडेक्स को सहेजा गया।

यह समाधान मैं एक ही समस्या थी caponica के समाधान here

0

का रूपांतरण है और मैं "कस्टम प्रपत्र प्रकार एक्सटेंशन" जिसके लिए दस्तावेज़ीकरण लिंक "http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html" पर दिया जाता है के माध्यम से ऐसा करने में सक्षम हूँ।

यह सही समाधान है ..

संबंधित मुद्दे