2014-01-22 104 views
4

之前添加JavaScript在管理类:的Symfony2 - 索纳塔管理员 - 场

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

我不知道我可以前的“名”添加JavaScript,你能帮帮我吗?

+0

你需要添加JavaScript的特定领域(在这种情况下是'name'字段)?你能告诉我更多关于你想做什么的吗? –

+0

我想从ajax创建自动完成名称。 – tengopl

+0

谢谢,现在我知道该怎么回答。等一下,我正在为你写一个答案。 –

回答

15

工作对我来说:

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

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

的src \ PP \ TestBundle \资源\意见\ 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 

(可能是我忘了什么事)

对不起,我英文不好:<>

+0

如果您需要从捆绑软件安装资产,请改用'app/console assets:install web --symlink'来避免复制资源... –

4

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

你的模板列表,以便延长本索纳塔管理目录内: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 
+0

是的,但现在显示错误:选项“模板”不存在。已知的选项是:“动作”,“attr”,“auto_initialize”(...) – tengopl

+0

好吧,我会更新我的答案。请给我一下。 –

+0

这意味着:我们不能在创建/编辑页面中使用自定义模板。 ##编辑##也许我应该使用过滤器? – tengopl