我正在尝试在我的Symfony2应用程序中使用que GenemuFormBundle。我按照以下链接中的步骤操作:
http://symfohub.com/repo/GenemuFormBundle/documentation
之后,它似乎已正确安装。在该网站的底部,它说:
你使用GenemuFormBundle,你发现它不起作用!也许你已经忘记了form_javascript或form_stylesheet。
原则是将javascript,stylesheet和html分开。这样可以更好地整合网页。
查看模板示例表单视图:
https://github.com/genemu/GenemuFormBundle/blob/master/Resources/doc/template.md
我将该代码复制到呈现表单的模板中。然后我下载了jquery,jquery-ui和jquery-tokeninput,它们都是js和css文件,因为看起来它们是实现Select2功能所需的文件,我将它们放入相应的文件夹中,并将它们正确加载(at至少Symfony2没有抱怨找不到它们。)
我还使用genemu_jqueryselect2_choice而不是默认代码将以下代码放在我的实体中:
->add('listofitems', 'genemu_jqueryselect2_choice',
array('choices' => array('item1' => 'item1',
'item2' => 'item2',
'item3' => 'item3'),
'required' => false ))
表单加载并正常工作,但我没有得到这样的选择框。
但相反,我得到了老式的选择框。如果我使用genemu_jqueryautocompleter_entity选项,自动完成功能也不起作用。我做错了什么?
答案 0 :(得分:4)
将following添加到您的树枝模板中也很重要:
{% block stylesheets %}
{{ form_stylesheet(form) }}
{% endblock %}
{% block javascripts %}
{{ form_javascript(form) }}
{% endblock %}
答案 1 :(得分:2)
遇到了同样的问题。
通过这些步骤,它可以工作:
确保包含select2资产。或者将select2.css和select2.js放在您的网络文件夹中。
<script src="{{ asset('js/select2.js') }}" type="text/javascript"></script>
此外,您应该在表单twig文件中添加Select2示例代码,如:
<script>
$(document).ready(function() {
$("#el4").val(["AL","AZ"]).select2();
$("#el4").click(function() { $("#el4").select2(); });
$("#wait_tags_destroy").click(function() { $("#wait_").select2("destroy"); });
});
</script>
至少更改部分ID名称中的#el4
答案 2 :(得分:1)
最好安装fanforfun/select2-bundle,然后在模板中使用Assetic功能:
{% block stylesheets %}
{{ parent() }}
{% stylesheets filter='cssrewrite' output='resources/css/*.css' 'bundles/fanforfunselect2/select2.css' %}
<link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
{% endstylesheets %}
{% if form is defined %}
{{ form_stylesheet(form) }}
{% endif %}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% javascripts output='resources/js/*.js' '@FanforfunSelect2Bundle/Resources/public/select2.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
{% if form is defined %}
{{ form_javascript(form) }}
{% endif %}
{% endblock %}
答案 3 :(得分:0)
我发现只是加载css和js脚本,如前面的答案所说,并将样式应用于所有选择框,它可以工作:
<link href="{{ asset('select2/select2.css') }}" rel="stylesheet">
<script src="{{ asset('js/select2.js') }}"></script>
<script>
$(document).ready(function() {
$("select").select2();
});
</script>