gpt4 book ai didi

symfony - 将 sonata_media_type 用作 1 :N via a sonata_type_collection field 时出现 500 错误

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

我正在使用 SonataAdminBundle 来管理我正在处理的项目的后端。在这种情况下,我想将一个或多个图像添加到“项目”。这是实体的相关部分

src/My/Bundle/Entity/Item.php

/**
* Item
*
* @ORM\Table(name="item")
* @ORM\Entity()
*/
class Item
{
/**
* @var Media
*
* @ORM\OneToMany(targetEntity="\Application\Sonata\MediaBundle\Entity\Media", mappedBy="item")
* ORM\JoinTable(name="item_media",
* joinColumns={@ORM\JoinColumn(name="item_id", referencedColumnName="id")}
* , inverseJoinColumns={@ORM\JoinColumn(name="media_id", referencedColumnName="id", unique=true)}
* )
*/
protected $media;
}

现在管理类的相关部分:

src/My/Bundle/Entity/Item.php

class ItemAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('media', 'sonata_type_collection'
, array(
'required' => false
, 'type' => 'sonata_media_type'
, 'by_reference' => false
, 'type_options' => array(
'provider' => 'sonata.media.provider.image'
, 'context' => 'default'
, 'auto_initialize' => false
)
)
, array(
'edit' => 'inline'
, 'inline' => 'table'
, 'allow_delete' => true
, 'sortable' => 'position'
))
;
}
}

现在在 UI 本身中,当我单击 + 添加新 按钮时,AJAX 响应是 500 错误并显示以下消息:

Impossible to invoke a method ("trans") on a NULL variable ("") in SonataDoctrineORMAdminBundle:CRUD:edit_orm_one_to_many.html.twig at line 30

我不太确定从这里到哪里去。我对 SonataAdminBundle 没有太多经验,尤其是对其他实体的这种类型的内联编辑/创建。

版本信息:

  • PHP 5.4.19
  • 交响乐 2.3.4
  • SonataAdminBundle 2.2.3
  • SonataMediaBundle2.2.3

最佳答案

这个问题似乎与this question有关在sonata-users谷歌群组。

问题似乎是媒体类型的标签没有传递给模板,这导致在此处调用翻译器/调用模板中的 trans 方法时出错:

{{ nested_field.vars['sonata_admin'].admin.trans(nested_field.vars.label) }}

SonataDoctrineORMAdminBundle/Resources/views/CRUD/edit_orm_one_to_many.html.twig .

我建议您首先尝试为您的表单类型添加标签。

'label' => 'Media' 

如果这不起作用,您可以 fork 存储库并在之后克隆它:

git clone https://github.com/yourusername/SonataDoctrineORMAdminBundle.git

然后使用 2.2.3 标签创建一个新分支:

git branch bugfix-2.2.3 2.2.3
git checkout bugfix-2.2.3

现在将 edit_orm_one_to_many.html.twig 中的 line 30 更改为(或将其完全删除,这将导致根本不呈现标签)

{% if nested_field.vars.label %}
{{ nested_field.vars['sonata_admin'].admin.trans(nested_field.vars.label) }}
{% endif %}

然后提交您的更改并...

...要么覆盖标签(请注意标签通常不应被覆盖)

git commit
git tag -f 2.2.3

... 或(更好)在您的 composer.json 中创建一个别名

"require": {
"sonata/doctrine-orm-admin-bundle" : "bugfix-2.2.3#<commit-sha> as 2.2.3"

然后将其添加到您的composer.json:

"repositories": [
{ "type": "vcs", "url": "http://github.com/yourusername/doctrine-orm-admin-bundle"}
],

之后运行

composer update sonata/doctrine-orm-admin-bundle

我不确定它是否有帮助,但在 this commit 中添加了对内联编辑的多对多支持。 .您可以尝试将关联更改为多对多并测试异常是否消失。

如果这也不起作用,请反馈,我将对此进行更深入的研究。

关于symfony - 将 sonata_media_type 用作 1 :N via a sonata_type_collection field 时出现 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19484277/

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