php - Select2entity 不使用嵌入表单
问题描述
我有这个代码
->add('product', Select2EntityType::class, [
'remote_route' => 'search',
'class' => Product::class,
'primary_key' => 'id',
'text_property' => 'name',
'minimum_input_length' => 2,
'page_limit' => 10,
'allow_clear' => true,
'delay' => 250,
'cache' => true,
'cache_timeout' => 60000, // if 'cache' is true
'language' => 'fr',
'placeholder' => 'yep',
'allow_add' => [
'enabled' => true,
'new_tag_text' => '',
'tag_separators' => '[".", ","]'
],
'multiple' => false,
'attr' => [
'style' => 'width:100%'
],
'scroll' => true,
])
我的 html :
{% block main %}
<div class="box-body">
<div class="row">
<div id="dynamic-relations-elements" class="hidden">
</div>
</div>
{% endblock %}
{% block body_javascript %}
{{ parent() }}
<script src="{{ asset('build/js/users.js') }}"></script>
<script src="{{ asset('bundles/tetranzselect2entity/js/select2entity.js') }}"></script>
{% endblock body_javascript %}
在ventilation.js
我有:
$('#dynamic-relations-elements').removeClass('hidden');
$.ajax({
type: "GET",
url: Routing.generate('create'),
success: function (response) {
$('#dynamic-relations-elements').html(response);
}
})
以及构建形式的路线:
/**
* @Route("/ajax/product-create", name="create",
* options = { "expose" = true })
* @param Request $request
* @return Response
*/
public function createProduct()
{
$productVen = new Product();
$form = $this->createForm(ProductType::class, $productVen);
return $this->render('/users/add-product.html.twig', [
'form' => $form->createView(),
]);
}
问题是选择框未初始化。我有product
一个简单的文本输入,而不是一个选择框。我在浏览器控制台中没有错误。请问有什么想法吗?提前谢谢
解决方案
如果您查看源代码行 144 - 148,您将看到元素是如何初始化的:
(function ($) {
$(document).ready(function () {
$('.select2entity[data-autostart="true"]').select2entity();
});
})(jQuery);
在您的情况下,这最初发生在表单存在之前。所以看起来你只需要手动初始化元素。
尝试这样的事情:
$.ajax({
type: "GET",
url: Routing.generate('_route_ventilation_products_create'),
success: function (response) {
let $dre = $('#dynamic-relations-elements');
$dre.html(response);
let $s2 = $dre.find('.select2entity');
$s2.select2entity();
$s2.on('change', function(){
// do something with selected value
console.log(this.id, $(this).find(':selected').val());
});
}
})
推荐阅读
- django - Django 和具有写入实例 + 多个读取副本的数据库——运行 Celery 作业
- r - 与涉及 ridge_models 的错误作斗争
- vue.js - TypeError:无法设置未定义的属性(设置“授权”)
- java - 直接调用@Bean注解的方法——函数调用@Service类中的一个bean
- javascript - 单击当前按钮时无法设置计数器
- google-sheets - 用于查找逗号分隔的 SKU 数组并返回与 SKU 关联的产品名称的电子表格公式
- mysql - 从当前月份和前 6 个月开始每月计数一列(包括空值)?
- flutter - 有没有办法避免在文本字段周围获取画布颜色?
- r - 从 CoinMarketCap API 下载数据
- html - 减少 Vuetify 列表中项目之间的垂直空白