【问题标题】:Better solution for retrieving array of tags from controller for tag-it从控制器中检索标签数组的更好解决方案
【发布时间】:2014-03-29 09:15:33
【问题描述】:

您好,我在我的项目中使用带有引导程序的 Symfony2。我只是想为这个问题寻求更好的解决方案。

我试图从我的数据库中获取所有存储的标签,并将它们分配给 tag-it 插件的 availableTags 属性。

所以我想出了这个解决方案。

这是我的控制器代码:

/**
 * 
 * @Route("/ask", name="ask")
 * @Security( "has_role( 'ROLE_USER' )" )
 * @Method("GET")
 * @Template
 */
public function askAction() {

    $tags = $this->getDoctrine()->getRepository('VerySoftAskMeBundle:Tag')->findAll();


    $entity = new Question();
    $form = $this->createCreateForm($entity);

    return array(
        'entity' => $entity,
        'form' => $form->createView(),
        'tags' => $tags
    );
}

这是我的树枝模板:

<label class="col-lg-1 text-left askLabels" for="tagField">Tags</label>
<input id="tagField" type="text" class="form-control col-lg-11">
<input id="fieldTags" type="hidden" value="{{ tags|join(',') }}">

这是我的脚本:

$('#tagField').tagit({
    availableTags: $('#fieldTags').val().split(',')
});

【问题讨论】:

  • 是的,它有效,但我认为这不是最好的方法。
  • 您对实现的哪个部分不满意?
  • 连接和拆分部分
  • 还有一个问题:您的 Javascript 代码在哪里?在模板文件中还是在 js 文件中?
  • 在模板文件中。

标签: twitter-bootstrap symfony jquery-plugins tag-it


【解决方案1】:

您可以直接在您的 javascript 中定义它,而不是这样做两次:

$('#tagField').tagit({
    availableTags: ["{{ tags|join('", "')|raw }}"]
});

并移除隐藏的输入:

<input id="fieldTags" type="hidden" value="{{ tags|join(',') }}">

【讨论】:

  • 什么不起作用?它将定义所有标签的数组(如果您之前的代码有效)
  • 你能分享一下availableTags: ["{{ tags|join('", "') }}"]的输出是什么
  • 每次显示自动完成建议时,它只显示所有用逗号分隔的标签.. java,javascipt,php,html,css,c++.....
  • 当您查看页面的源代码时,您应该会看到类似this 的内容。如果您看到不同,我建议您再次复制代码。我认为您可能复制了旧代码。
  • 不... Here 是输出..
猜你喜欢
  • 1970-01-01
  • 2012-05-10
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多