7

संपादित करें:सोनाटा: गंभीर त्रुटि: '100' पर पहुंच गया की अधिकतम समारोह नेस्टिंग स्तर .. जब embedding रूपों

echo `'xdebug.max_nesting_level = 250' >> /etc/php5/conf.d/xdebug.ini` 

: एक ही मुद्दे को हल पर रुचि किसी को भी, कि चाल किया था के लिए मैंने एक दूसरे से जुड़े 3 इकाइयों के लिए 3 व्यवस्थापक बनाए हैं, जहां एक व्यवस्थापक बी व्यवस्थापक को एम्बेड कर रहा है और बी व्यवस्थापक सी व्यवस्थापक को एम्बेड करता है। बी इकाई में ए और बी इकाई के साथ बहुत से संबंध हैं।

एक इकाई निम्न कोड के साथ बी इकाई एम्बेड करता है:

$formMapper->add('b', 'sonata_type_collection', array(
    'by_reference' => false 
), array(
    'edit' => 'inline', 
    'inline' => 'table', 
    'sortable' => 'position' 
)); 

बी इकाई एम्बेड करता है के बाद एक साथ सी इकाई:

$formMapper->add('c', 'sonata_type_model', array( 
    'required' => true, 
    'label'  => ucfirst($this->trans('c', array(), $this->translationDomain, $this->langCode)) 
    ), array('edit' => 'list')); 

नोट: 'edit' => 'standard' के पक्ष में 'edit' => 'list' बदलते निम्न त्रुटि से बचा जाता है ।

पर 0 एडमिनिस्ट्रेशन पर बी 0 एडमिनिस्ट्रेशन पर sonata_type_model फॉर्म प्रकार एनी संपादित करते समय निम्न त्रुटि देता है।

Sonata: Fatal error: Maximum function nesting level of '100' reached, aborting! in myProject/vendor/doctrine-common/lib/Doctrine/Common/Lexer.php on line 756 

मुश्किल या उत्सुक बात यह है कि कोई फर्क नहीं पड़ता अगर संपादन सूची या मानक है अगर मैं बी व्यवस्थापक करने के लिए जाने के लिए इसे संपादित करने के लिए है: बजाय array('edit' => 'standard') तो प्रयोग किया जाता है कोई त्रुटि उत्पादन होता है। समस्या केवल तभी दिखाई देती है जब मैं संपादन सूची विकल्प सेट के साथ ए में एम्बेडेड बी संपादित करता हूं। और यह मेरे साथ कुछ अन्य संस्थाओं में हो रहा है जहां मैंने एक ही व्यवहार लागू किया।

यहाँ ए, बी और सी इकाई हैं और कैसे वे एक दूसरे से जोड़ने:

एक इकाई:

class A 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer", length=4) 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 
    /** @ORM\OneToMany(targetEntity="B", mappedBy="a", cascade={"persist"}, orphanRemoval=true) */ 
    protected $b; 
} 

बी इकाई:

class B 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer", length=4) 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id 
    /** 
    * @ORM\ManyToOne(targetEntity="C", inversedBy="b", cascade={"persist"}) 
    * @ORM\JoinColumn(name="c_id", nullable=false, referencedColumnName="id", onDelete="CASCADE") 
    */ 
    private $c; 
    /** 
    * @ORM\ManyToOne(targetEntity="A", inversedBy="b", cascade={"persist"}) 
    * @ORM\JoinColumn(name="a_id", nullable=false, referencedColumnName="id", onDelete="CASCADE") 
    */ 
    private $a; 
} 

सी इकाई:

Class C 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer", length=4) 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 
    /** @ORM\OneToMany(targetEntity="B", mappedBy="c", cascade={"persist"}) */ 
    private $b; 
} 

लू लेने में सक्षम होने के लिए इस पर आप एक समान व्यवहार की जांच करने के लिए सोनाटा डेमो प्रोजेक्ट का उपयोग कर सकते हैं।
जैसा कि आप देख सकते हैं कि यह वही उपयोग केस है जो सोनाटा प्रोजेक्ट डेमो पर पाया जा सकता है जहां गैलेक्सी गैलेहास मैडियास के खिलाफ जुड़ा हुआ है जो मीडिया के खिलाफ लिंक करता है: http://demo.sonata-project.org/admin/sonata/media/gallery/255/edit?context=default जैसा कि आप देख सकते हैं, गैलरीहासमीडिया में गैलरी के साथ कई सारे संबंध हैं और मीडिया के साथ एक और जब आप गैलरी को संपादित करते हैं तो sonata_type_modeledit' => 'inline','inline' => 'table', के साथ देख सकता है, इसलिए गैलरी हासमीडिया गैलरी फॉर्म के अंदर एम्बेडेड है ताकि नए मीडिया को जोड़ने में सक्षम हो सकें जो मौजूदा गैलरी से जुड़े हुए हैं और GalleryHasMedia के अंदर संग्रहीत हैं।

क्या किसी को भी उजागर की स्थिति की स्थिति का सामना करना पड़ा है? उम्मीद है कि कोई सही दिशा को इंगित कर सकता है या क्या हो रहा है पर एक सुराग प्राप्त करने में मदद कर सकता है।

पीडी: मेरे लिए ऐसा लगता है जैसे बी और सी इकाइयां अंतहीन पाश में एक-दूसरे को जोड़/एम्बेड कर रही हैं। लेकिन जैसा कि कहा गया है, 3 व्यवस्थापक अलग से काम कर रहे हैं (जबकि ए बी को एम्बेड नहीं करता है)।

+0

यही किया था चाल: echo 'xdebug.max_nesting_level = 250' >> /etc/php5/conf.d/xdebug.ini – user846226

+0

धन्यवाद कि एक दिन के लिए मेरे पागल चला रहा है, सिम्फनी के साथ phpunits – dmi3y

+0

चलाने के दौरान कृपया अपने समाधान के साथ अपने प्रश्न को संपादित करने के बजाय कृपया एक वास्तविक उत्तर प्रदान करें ताकि समुदाय इस प्रश्न को जानता हो एस्टोन हल हो गया है। – lifo

उत्तर

0

एक ही मुद्दा है, कि चाल किया सुलझाने पर रुचि किसी के लिए:

echo `'xdebug.max_nesting_level = 250' >> /etc/php5/conf.d/xdebug.ini` 
5

यह xdebug चलाने वाले सर्वरों के साथ एक आम समस्या है। आपको अपने xdebug.ini कॉन्फ़िगरेशन में xdebug.max_nesting_level को बढ़ाकर घोंसले के स्तर को बढ़ाना होगा।इसे 250 की तरह कुछ सेट करना पर्याप्त होना चाहिए।

एक त्वरित तरीका सेटिंग जोड़ने के लिए अपने लिनक्स सर्वर पर यह करने के लिए है:

echo `'xdebug.max_nesting_level = 250' >> /etc/php5/conf.d/xdebug.ini` 
+0

उत्तर जीवन के लिए धन्यवाद लेकिन जैसा कि आपको पहले से ही ध्यान दिया जाना चाहिए कि यह संपादन के माध्यम से पहले ही हल हो चुका है। – user846226