![](/img/trans.png)
[英]SonataAdminBundle sonata_type_collection not showing field
[英]500 error when using sonata_media_type as a 1:N via a sonata_type_collection field
我正在使用SonataAdminBundle来管理我正在进行的项目的后端。 在这种情况下,我想要向“项目”添加一个或多个图像。 这是实体的相关位
SRC /我/包/实体/ 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 /我/包/实体/ 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本身,当我单击+ Add New按钮时,AJAX响应是500错误,带有以下消息:
无法在SonataDoctrineORMAdminBundle中的NULL变量(“”)上调用方法(“trans”):第30行的CRUD:edit_orm_one_to_many.html.twig
我不确定从哪里开始。 我对SonataAdminBundle没有多少经验,特别是这种类型的内联编辑/创建其他实体。
版本信息:
这个问题似乎与sonata-users google group中的这个问题有关。
问题似乎是媒体类型的标签没有传递给模板,这导致在调用模板中的翻译器/调用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'
如果这不起作用,您可以分叉存储库并在之后克隆它:
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
我不确定它是否有帮助,但是在此提交中添加了对内联编辑的多对多支持。 您可以尝试将关联更改为多对多,并测试异常消失。
如果这不起作用,请报告回来,我会深入研究。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.