在 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的主要内容,如果未能解决你的问题,请参考以下文章

在 symfony2 中使用资产的源映射

在 Symfony2 的查询中使用自定义 DQL 函数

在 Symfony2 中使用 Monolog 进行日志旋转

symfony2 电子邮件未在命令中发送

在 Twig 模板中使用 Symfony2 控制器返回

使用 Monolog 在 Symfony2 中记录 PHP 致命错误