forms - 在 Symfony 表单中启用 Select2Search
问题描述
我想在我的 Symfony 表单中启用选择 2 搜索,我到目前为止尝试过:
在我的表单类中,我有这个:
->add('parent', EntityType::class, [
'class' => Category::class,
'choice_label' => 'title',
'attr' => [
'class' => 'select2'
]
])
在我的树枝文件中:
<head>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2-rc.1/css/select2.min.css" rel="stylesheet" />
<!-- Loading jquery here--><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2-rc.1/js/select2.min.js"></script>
</head>
{{ form_start(form) }}
<script type="text/javascript">
$('select').select2();
</script>
{{ form_widget(form) }}
{{ form_end(form) }}
但我没有得到搜索栏的下拉菜单。只是 Symfony 的默认下拉菜单。我究竟做错了什么
解决方案
主要原因是该字段是在您尝试定位它之后创建的,通过以下行:
{{ form_widget(form) }}
之后必须执行 JavaScript 才能定位该字段(此外,您的模板的 HTML 结构是错误的)。
尝试这个 :
<!DOCTYPE html>
<html>
<head>
<title>Test form</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2-rc.1/css/select2.min.css" rel="stylesheet" />
<!-- Loading jquery here--><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2-rc.1/js/select2.min.js"></script>
</head>
<body>
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
<script>
$('select').select2();
</script>
</body>
</html>
通常最好在执行脚本之前等待页面加载,使用 jQuery 您可以通过将脚本更改为以下内容来确保是这种情况:
<script>
$(document).ready(function(){
$('.select2').select2();
});
</script>
请注意,我还更改了 jQuery 选择器以使用您添加到表单构建器中的字段的类。这样您就可以控制要定位的选择字段。
推荐阅读
- c# - 默认引用只会在编辑模式下应用?
- php - 带有空格的用户名的 PHP 提及系统
- javascript - 在孩子之后渲染一个按钮,ReactJS
- azure - 我的 yaml 管道文件中需要一个步骤/任务,它将创建一个唯一的运行版本值
- python - 请求返回 400,负载中带有 JSON,负载中的字符串返回 200
- spring-boot - 从SpringFox2.x升级到SpringFox3.0开放API
- php - 在 WooCommerce 电子邮件通知中显示产品自定义字段
- python - 如何使用 Selenium 和 Python 在 https://www.nike.com/register 中填写电子邮件地址字段
- tableau-api - Tableau:有没有办法使用子组值将值添加到“主”组的成员?
- firebase - 具有多种环境的 Flutter Firebase/Admob