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

ten*_*opl 8 javascript symfony symfony-sonata sonata-admin

在管理类中:

protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
            ->add('name', 'text')
            ->add('description', 'text')
    ;
}
Run Code Online (Sandbox Code Playgroud)

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

ten*_*opl 21

为我工作:

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

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

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 %}
Run Code Online (Sandbox Code Playgroud)

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

app/console assets:install web
Run Code Online (Sandbox Code Playgroud)

(可能我忘记了什么)

抱歉我的英文不好:<>


Dan*_*cas 5

EDITED

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

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

你在这里有一些信息索纳塔管理员 - 自定义模板

更多信息在这里自定义字段类型

一个例子可能是这样的:

管理员班

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

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

在这个Sonata Admin目录中,您有一个要扩展的模板列表: 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
Run Code Online (Sandbox Code Playgroud)