我正在使用symfony2和SonataAdminBundle.我有一个名为Post的简单实体,其中我的内容字段基本上是html文本(来自记录的ckeditor).我需要在Post列表中将内容字段显示为原始html,而不是转义它.像这样黑客攻击base_list_field模板
{% block field %}{{ value|raw }}{% endblock %}
Run Code Online (Sandbox Code Playgroud)
有效,但显然不是正确的方法.任何提示?
编辑:已解决!我在config.yml中为sonata_doctrine_orm_admin定义了一个自定义html类型:
sonata_doctrine_orm_admin:
templates:
types:
list:
html: MyBundle:Default:list_html.html.twig
Run Code Online (Sandbox Code Playgroud)
并创建了自定义list_html.html.twig模板,其中我不转义HTML:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{value|raw}}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
现在,在PostAdmin中,我可以在configureListFields方法中定义字段的行为:
$listMapper
->add('content', 'html')
Run Code Online (Sandbox Code Playgroud) 我的问题如下.我正在使用Symfony的Sonata Admin.在Admin部分中,当我尝试创建实体时,单击添加按钮(拼写为"Ajouter")时不会显示任何内容:

我收到以下错误:Call to a member function getName() on a non-object在chrome控制台中
这是我的实体层次结构的方式,我有三个以下列方式链接在一起的对象:
Video ---OneToOne--> String ---OneToMany--> LocalizedString
Run Code Online (Sandbox Code Playgroud)
简单地说,我有一个视频将有一个标题,这个标题将被翻译.这是我的实体:
LocalizedString
OSC\UtilsBundle\Entity\LocalizedString:
type: entity
table: null
repositoryClass: OSC\UtilsBundle\Entity\LocalizedStringRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
locale:
type: string
length: '20'
content:
type: string
length: 255
manyToOne:
parent:
targetEntity: String
mappedBy: localizedObjects
lifecycleCallbacks: { }
Run Code Online (Sandbox Code Playgroud)
串
OSC\UtilsBundle\Entity\String:
type: entity
table: null
repositoryClass: OSC\UtilsBundle\Entity\StringRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToMany:
localizedObjects:
targetEntity: LocalizedString
mappedBy: parent …Run Code Online (Sandbox Code Playgroud) 我有一个商家实体,其中包含以下字段和关联: -
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="merchants")
*/
public $categories;
/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="merchants")
*/
public $tags;
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="merchants")
*/
protected $primaryCategory;
/**
* @ORM\ManyToOne(targetEntity="Tag", inversedBy="merchants")
*/
protected $primaryTag;
Run Code Online (Sandbox Code Playgroud)
标签和类别也有ManyToMany映射.所以我们有Tag_Category,Merchant_Tag,Merchant_Category映射表.
现在我想在这些字段上执行一些ajax.
我想让用户先选择主标签.在主标记的基础上,ajax将类别刷新为仅属于此标记的类别以及更多操作.
我怎样才能做到这一点?
谢谢!
我有一个Select2自动完成输入(通过SonataAdmin构建),但在我的生活中无法弄清楚如何以编程方式将其设置为已知的键/值对.
这里有一个JS小提琴,大致显示了我的内容.我想知道的是我可以将哪些功能附加到按钮上
我已经尝试了jQuery和Select2 data以及val方法的各种组合,在页面上针对各种输入调用,但似乎没有任何工作......当然有一些方法可以做到这一点?
- 编辑 -
下面接受的答案非常有用,有助于阐明初始化选择的正确方法,并解释initSelection的用途.
话虽如此,我最大的错误似乎是我试图触发变化的方式.
我用的是:
$(element).select2('data', newObject).trigger('change');
Run Code Online (Sandbox Code Playgroud)
但是这会导致addselect2的change事件中出现一个空对象.
相反,如果您使用:
$(element).select2('data', newObject, true);
Run Code Online (Sandbox Code Playgroud)
那么代码可以正常工作,newObject可以在select2的change事件中使用,并且值正确设置.
我希望这些额外的信息可以帮助别人!
我在"ext_translations"表中有一个包含所有翻译的表.
翻译工作很棒.现在的问题是:我想通过sonata-admin包管理这些翻译.
我已经找到了一个文档,如何使用sonata admin获取工作原理扩展.但在我的情况下,我有一个表/实体用于我的所有翻译(对于多个实体).
所以根据这个文档:http://www.elao.com/blog/symfony-2/doctrine-2/how-to-manage-translations-for-your-object-using-sonataadminbundle.html应该是我的mappedBy属性(见下文)?
ext_translations表:
mysql> show columns from ext_translations;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| locale | varchar(8) | NO | MUL | NULL | |
| object_class | varchar(255) | NO | | NULL | |
| field | varchar(32) | NO | | NULL | |
| foreign_key | …Run Code Online (Sandbox Code Playgroud) 我正在使用sonata管理包来生成我的后端,我很高兴它,我想用我的后端来显示统计数据.
我想我可以通过调整bundle的视图,"standard_layout.html.twig"来做到这一点.
问题是,我找不到例子甚至是人们谈论它,所以我想知道,这可能吗?是不是人们都在谈论它,因为它太简单了?你做了吗 ?
我真的很想有一个后端,所以请开导我!
谢谢你,copndz
我在创建课程时遇到了问题.这是我正在尝试创建表单的数据库方案的一部分:
我正在尝试做的是创建一个课程,我可以创建会话和日期(时刻)附加到该会话.它应该看起来像这样:
在我的CourseAdmin课程中,我有:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', 'text', array('label' => 'Naam'))
->add('description', 'textarea', array('label' => 'Beschrijving'))
->add('materials', 'textarea', array('label' => 'Benodigde materialen'))
->add('numberOfParticipants', 'number', array('label' => 'Aantal deelnembers'))
->add('numberOfDays', 'number', array('label' => 'Aantal dagen'))
->add('price', 'number', array('label' => 'Prijs'))
->add('priceKmo', 'number', array('label' => 'KMO-portefeuille Prijs'))
->add('location', 'sonata_type_model', array('expanded' => true, 'by_reference' => false, 'multiple' => true, 'btn_add' => false))
->add('session', 'sonata_type_collection', array(
'by_reference' => false,
'type_options' => array(
// Prevents the "Delete" option from being …Run Code Online (Sandbox Code Playgroud) 我需要从config.yml解析一些配置参数,例如启用的语言.但是当我尝试使用普通的symfony方法时:$this->container->get('my_params');它失败了,因为我的管理类扩展了Sonata\AdminBundle\Admin\Admin类而不扩展Symfony\Component\DependencyInjection\ContainerAware类.
请问,如何在奏鸣曲Admin类中获取容器?
现在我通过重写奏鸣曲管理类来解决这个问题,使其扩展ContainerAware.
我有Page列的实体类type=integer.当我做:
<service id="sonata.admin.pages" class="Main\ProgramBundle\Admin\PageAdmin">
<tag name="sonata.admin" manager_type="orm" group="dashboard" label="Pages"/>
<argument />
<argument>Main\ProgramBundle\Entity\Page</argument>
<argument>SonataAdminBundle:CRUD</argument>
</service>
<service id="sonata.admin.groups" class="Main\ProgramBundle\Admin\GroupAdmin">
<tag name="sonata.admin" manager_type="orm" group="stories" label="Groups"/>
<argument />
<argument>Main\ProgramBundle\Entity\Page</argument>
<argument>SonataAdminBundle:CRUD</argument>
</service>
Run Code Online (Sandbox Code Playgroud)
简而言之,两个部分都在同一实体上工作,除了每个部分都有不同的查询和表单.
但是,即使我选择了PageAdmin,奏鸣曲总是会执行Admin/GroupAdmin.这该怎么做?
如何doctrine_orm_datetime_range在使用jQuery UI datepicker的Sonata Admin Bundle中创建过滤器?
我尝试了以下,但它不起作用:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('datumUitgevoerd', 'doctrine_orm_datetime', array('widget' => 'single_text'), null, array('required' => false, 'attr' => array('class' => 'datepicker')))
;
}
Run Code Online (Sandbox Code Playgroud) datepicker jquery-ui-datepicker symfony-sonata symfony-2.1 sonata-admin
sonata-admin ×10
symfony ×8
php ×3
symfony-2.1 ×2
ajax ×1
datepicker ×1
doctrine-orm ×1
javascript ×1
jquery ×1
nested ×1
symfony-2.2 ×1
twig ×1