在 Symfony2 中使用 GenemuFormBundle
Posted
技术标签:
【中文标题】在 Symfony2 中使用 GenemuFormBundle【英文标题】:Using GenemuFormBundle in Symfony2 【发布时间】:2012-11-23 01:39:31 【问题描述】:我正在尝试在我的 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 功能所需的文件,我将它们放入各自的文件夹中,并正确加载它们(在至少 Symfony2 没有抱怨找不到它们)。
我还将以下代码放入我的实体中,使用genemu_jqueryselect2_choice 而不是默认代码:
->add('listofitems', 'genemu_jqueryselect2_choice',
array('choices' => array('item1' => 'item1',
'item2' => 'item2',
'item3' => 'item3'),
'required' => false ))
表单加载并正常工作,但我没有得到这样的选择框。
但我得到的是老式的选择框。如果我使用genemu_jqueryautocompleter_entity 选项,自动完成功能也不起作用。我做错了什么?
【问题讨论】:
您是否已在 this page 上完成第一步以在您的应用配置中启用它? 如果您的意思是将代码添加到 app/config/config.yml,是的,我做到了。 【参考方案1】:将following 添加到您的树枝模板也很重要:
% block stylesheets %
form_stylesheet(form)
% endblock %
% block javascripts %
form_javascript(form)
% endblock %
【讨论】:
【参考方案2】:遇到了同样的问题。
通过这些步骤,它可以工作:
确保包含 select2 资产。或者将 select2.css 和 select2.js 放在你的 web 文件夹中。
<script src=" asset('js/select2.js') " type="text/javascript"></script>
此外,您应该在表单树枝文件中添加您的 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
【讨论】:
【参考方案3】:最好安装fanforfun/select2-bundle,然后在模板中使用 Assetic 功能:
% block stylesheets %
parent()
% stylesheets filter='cs-s-rewrite' 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 %
【讨论】:
【参考方案4】:我发现只需加载 css 和 js 脚本,如上一个答案所说,并将样式应用于所有选择框,它就可以工作:
<link href=" asset('select2/select2.css') " rel="stylesheet">
<script src=" asset('js/select2.js') "></script>
<script>
$(document).ready(function()
$("select").select2();
);
</script>
【讨论】:
以上是关于在 Symfony2 中使用 GenemuFormBundle的主要内容,如果未能解决你的问题,请参考以下文章