在管理员课程中:
protected function configureFormFields(FormMapper $formMapper) {
$formMapper
->add('name', 'text')
->add('description', 'text')
;
}
我不知道在“名字”添加javascript之前我怎么能,你能帮助我吗?
答案 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 强>
1º您需要为它创建一个自定义TWIG模板(您可以在窗口小部件代码之前放置您的javascript代码)。
2º然后在ap/config/config.yml
内写入自定义模板,以允许Symfony和SonataAdmin识别它。
1º您在这里有一些信息Sonata Admin - Custom template
2º此处有更多信息customize field types
一个例子可能是这样的:
管理员课程
protected function configureFormFields(FormMapper $formMapper) {
$formMapper
->add('name', 'ajax_autocomplete')
->add('description', 'text')
;
}
而且,在TWIG模板中,您需要从最适合您需求的Sonata Admin字段模板进行扩展。在这种情况下,可能是base_edit.html.twig
或edit_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'
中找到更多信息