gpt4 book ai didi

symfony - 奏鸣曲 : Fatal error: Maximum function nesting level of '100' reached.。嵌入表格时

转载 作者:行者123 更新时间:2023-12-04 12:23:35 27 4
gpt4 key购买 nike

编辑:对于对解决同一问题感兴趣的任何人,都可以解决问题:

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

我为 3 个相互链接的实体创建了 3 个管理员,其中 A 管理员嵌入 B 管理员,B 管理员嵌入 C 管理员。 B 实体与 A 和 B 实体具有多对一关系。

A 实体使用以下代码嵌入 B 实体:

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

B 实体将 C 实体嵌入到以下实体中:

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

注意:更改 'edit' => 'list'赞成 'edit' => 'standard'避免了以下错误。

放置 array( 'edit' => 'list' )sonata_type_model 上的 B 管理实体上表单类型在编辑 A 实体时出现以下错误。如果改为 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;
}

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;
}

C实体:

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;
}

为了能够查看所有内容,您可以使用奏鸣曲演示项目来检查类似的行为。
如您所见,它与 Sonata 项目演示中的用例相同,其中 Gallery 与 GalleHasMedias 链接,后者与 Media 链接: http://demo.sonata-project.org/admin/sonata/media/gallery/255/edit?context=default如您所见,GalleryHasMedia 与 Gallery 有一个 ManyToOne 关系,另一个与 Media 有关系,因此当您编辑 Gallery 时,您可以看到 sonata_type_modeledit' => 'inline','inline' => 'table',因此,GalleryHasMedia 嵌入在 Gallery 表单中,以便能够添加将与当前 Gallery 链接并存储在 GalleryHasMedia 中的新媒体。 .

有没有人遇到过类似暴露的情况?希望有人可以指出正确的方向或帮助获得有关正在发生的事情的线索。

PD:对我来说,B 和 C 实体似乎在无限循环中相互链接/嵌入。但如上所述,3 个管理员单独工作很好(而 A 不嵌入 B)。

最佳答案

这是运行 xdebug 的服务器的常见问题。您必须通过增加 xdebug.max_nesting_level 来增加嵌套级别。在您的 xdebug.ini 配置中。将其设置为 250 之类的值就足够了。

添加设置的一种快速方法是在您的 linux 服务器上执行此操作:

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

关于symfony - 奏鸣曲 : Fatal error: Maximum function nesting level of '100' reached.。嵌入表格时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com