2014-01-22 141 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