編輯:任何有興趣在解決同樣的問題,該訣竅:索納塔:致命錯誤:「100」達到最大功能嵌套層次..當嵌入形式
echo `'xdebug.max_nesting_level = 250' >> /etc/php5/conf.d/xdebug.ini`
我爲3個實體創建了3個管理員,這3個實體彼此鏈接,其中A管理員嵌入了B管理員,B管理員嵌入了C管理員。 B實體與A和B實體具有ManyToOne關係。
甲實體嵌入乙實體用下面的代碼:
$formMapper->add('b', 'sonata_type_collection', array(
'by_reference' => false
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position'
));
乙實體嵌入具有以下一種C實體:
$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'
避免以下錯誤。
在B上配置array('edit' => 'list')
sonata_type_model
表單類型的管理實體在編輯A enity時出現以下錯誤。相反,如果array('edit' => 'standard')
被使用,則沒有錯誤輸出:
Sonata: Fatal error: Maximum function nesting level of '100' reached, aborting! in myProject/vendor/doctrine-common/lib/Doctrine/Common/Lexer.php on line 756
棘手的或奇怪的是,無論是編輯列表或標準,如果我去到B的管理員對其進行編輯。這個問題只會出現,如果我編輯B嵌入到A與編輯列表選項集。這在我執行相同行爲的其他實體中發生在我身上。
這裏是A,B和C實體以及它們如何彼此鏈接:
甲實體:
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;
}
爲了能夠去廁所K在這一切你可以使用奏鳴曲演示項目來檢查類似的行爲。
正如你可以看到它是相同的用例可以在Sonata Project演示中找到,其中Gallery鏈接到與媒體鏈接的GalleHasMedias:http://demo.sonata-project.org/admin/sonata/media/gallery/255/edit?context=default如您所見,GalleryHasMedia與Gallery有一個ManyToOne關係,當您編輯圖庫時,您可以看到sonata_type_model
與edit' => 'inline','inline' => 'table',
,因此GalleryHasMedia被嵌入到圖庫表格中,以便能夠添加將與當前圖庫鏈接並存儲在GalleryHasMedia
內部的新媒體。
有沒有人遇到暴露的情況?希望有人能指出正確的方向或幫助弄清楚發生了什麼。
PD:對我來說,好像B和C實體正在無限循環地鏈接/嵌入對方。但如前所述,3個管理員分別工作得很好(而A不嵌入B)。
這做的技巧:echo'xdebug.max_nesting_level = 250'>> /etc/php5/conf.d/xdebug.ini – user846226
感謝這是我的堅果一天,與Symphony同時運行phpunits – dmi3y
而不是用你的解決方案編輯你的問題,請提供實際的答案,以便社區知道這個問題estion已解決。 – lifo