Symfony2 - Sonata Admin - 在字段之前添加javascript

时间:2014-01-22 18:33:20

标签: javascript symfony sonata-admin symfony-sonata

在管理员课程中:

protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
            ->add('name', 'text')
            ->add('description', 'text')
    ;
}

我不知道在“名字”添加javascript之前我怎么能,你能帮助我吗?

3 个答案:

答案 0 :(得分:18)

为我工作:

在管理类 src \ PP \ TestBundle \ TestAdmin.php

public function configure() {
    $this->setTemplate('edit', 'PPTestBundle:CRUD:edit_javascript.html.twig');
}

src \ PP \ TestBundle \ Resources \ views \ edit_javascript.html.twig

{% extends 'SonataAdminBundle:CRUD:base_edit.html.twig' %}
{% block javascripts %}
{{ parent() }}
<script src="{{ asset('bundles/pptest/admin/js/myscripts.js') }}" type="text/javascript"></script>
{% endblock %}

当你完成所有这些工作并且你已经上传了myscripts.js时,你应该在命令行中发送它:

app/console assets:install web

(可能我忘记了什么)

抱歉我的英文不好:&lt;&gt;

答案 1 :(得分:5)

<强> EDITED

您需要为它创建一个自定义TWIG模板(您可以在窗口小部件代码之前放置您的javascript代码)。

然后在ap/config/config.yml内写入自定义模板,以允许Symfony和SonataAdmin识别它。

您在这里有一些信息Sonata Admin - Custom template

此处有更多信息customize field types

一个例子可能是这样的:

管理员课程

protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
            ->add('name', 'ajax_autocomplete')
            ->add('description', 'text')
    ;
}

而且,在TWIG模板中,您需要从最适合您需求的Sonata Admin字段模板进行扩展。在这种情况下,可能是base_edit.html.twigedit_text.html.twig

您可以在此Sonata管理员目录中找到要扩展的模板列表:vendor\sonata-project\admin-bundle\Sonata\AdminBundle\Resources\views\CRUD

<强>定制

想象一下,您已将自定义模板放在XXXBundle:YYY:ajax_autocomplete.html.twig

如果你在这里写一行,我认为它应该有效:

sonata_doctrine_orm_admin:
    templates:
        types:
            list:
                ajax_autocomplete: XXXBundle:YYY:ajax_autocomplete.html.twig

答案 2 :(得分:0)

从Sonata管理员3.x开始,您可以在页面中添加js / css或从页面中删除js / css,而无需扩展页面。

sonata_admin:
    ....
    assets:
        # javascript paths to add to the page in addition to the list above
        extra_javascripts:
            - 'your js file path'
        # javascript paths to remove from the page
        remove_javascripts: 
            - 'your js file path'

您可以在这里https://github.com/sonata-project/SonataAdminBundle/pull/4836/files?short_path=e252be0#diff-e252be027e26148c11d971dc969f4be0

中找到更多信息