Php 复选框列表Symfony 4
我是Symfony 4的新手,我正在尝试在以下情况下创建一个带有搜索者的复选框列表: 我有一个名为SAI的实体,这个实体可能被许多用户“拥有”(因此,我有一个名为User的实体)。Php 复选框列表Symfony 4,php,list,checkbox,symfony4,Php,List,Checkbox,Symfony4,我是Symfony 4的新手,我正在尝试在以下情况下创建一个带有搜索者的复选框列表: 我有一个名为SAI的实体,这个实体可能被许多用户“拥有”(因此,我有一个名为User的实体)。 我有一个控制器AddSAIController.php,在那里我可以管理如何添加SAI。当我添加它时,我想显示一个表单,用户可以在其中输入SAI的序列号,并可以检查用户拥有该SAI的内容。问题是我的数据库中会有很多用户,我需要一个搜索者来更快地找到我想要的用户 首先,我尝试在上的文档之后创建复选框列表,我成功地向用户
我有一个控制器AddSAIController.php,在那里我可以管理如何添加SAI。当我添加它时,我想显示一个表单,用户可以在其中输入SAI的序列号,并可以检查用户拥有该SAI的内容。问题是我的数据库中会有很多用户,我需要一个搜索者来更快地找到我想要的用户 首先,我尝试在上的文档之后创建复选框列表,我成功地向用户显示了复选框,但不是像我所希望的那样使用复选框,而是像输入文本类型一样显示它们。
这是我的代码: 添加_sais.html.twig
{% block body %}
<div class="main">
<h1>Add SAI</h1>
<hr>
<div class="formUsers">
{{ form_start(form) }}
{% for user in form.users %}
{{ form_row(user.username) }}
{% endfor %}
{{ form_end(form) }}
</div>
</div>
{% endblock %}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('serial_number')
->add('users', EntityType::class, array(
'label' => false,
'class' => User::class,
'multiple' => true,
'attr' => ['data-select' => 'true']
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => SAI::class,
));
}
UsersType.php
public function addSAI(Request $request)
{
$sai = new SAI();
$users = $this->getDoctrine()->getRepository(User::class)->findAll();
$sai->setUsers($users);
$form = $this->createForm(SAIType::class,$sai);
$form->handleRequest($request);
return $this->render('management/add_sais.html.twig', array(
'form' => $form->createView(),
));
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('username');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => User::class,
));
}
SAIType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('serial_number');
$builder->add('users', CollectionType::class, array(
'entry_type' => UsersType::class,
'entry_options' => array('label' => false),
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => SAI::class,
));
}
现在,我很高兴能得到一些帮助来创建复选框,稍后我将执行seracher。要在其中包含多个选择器和搜索功能,可以使用jQuery selectbox插件,例如Select2。这将为您提供一个选择字段,您可以在其中搜索并拥有多个输入。试试这个: SAIType.php
{% block body %}
<div class="main">
<h1>Add SAI</h1>
<hr>
<div class="formUsers">
{{ form_start(form) }}
{% for user in form.users %}
{{ form_row(user.username) }}
{% endfor %}
{{ form_end(form) }}
</div>
</div>
{% endblock %}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('serial_number')
->add('users', EntityType::class, array(
'label' => false,
'class' => User::class,
'multiple' => true,
'attr' => ['data-select' => 'true']
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => SAI::class,
));
}
然后在您想要使用它的页面上(或将其放入base.html.twig
):
CSS
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
Javascript
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<script>
$('select[data-select="true"]').select2({});
</script>
$('select[data select=“true”]”)。select2({});
您好,非常感谢您的回答。我已经成功地做到了,除了搜索之外,一切都正常,我看不到任何搜索用户的选项。它显示用户列表,当我选择任何一个用户时,它都会工作,但我无法搜索。知道会是什么吗?谢谢检查您是否忘记了部分'attr'=>['data-select'=>'true']
或呈现表单页面上的两个Java脚本中的任何一个。它应该看起来像一个单一的输入字段,您可以在其中进行搜索和选择。我的add_sais.html.twig看起来像。事实上,如果我删除了脚本,它仍然可以工作,所以我想它是不会被检测到的。如果你没有发现任何错误,别担心,我不会再打扰你了:D,我最终会找到问题所在。谢谢好啊首先,javascript应该在“javascripts”块中,而不是在主体块中。这应该是“{%block javascripts%}….这就是您的javascript所在的位置…{%endblock%}。其次,你的css应该放在你的css块中,就像javascript块一样。最后,如果你还没有,你需要包含jQeury。把它放在你的:
你说得对,它现在可以工作了!我不知道我必须为javascript制作一个块。非常感谢!