Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复选框列表Symfony 4_Php_List_Checkbox_Symfony4 - Fatal编程技术网

Php 复选框列表Symfony 4

Php 复选框列表Symfony 4,php,list,checkbox,symfony4,Php,List,Checkbox,Symfony4,我是Symfony 4的新手,我正在尝试在以下情况下创建一个带有搜索者的复选框列表: 我有一个名为SAI的实体,这个实体可能被许多用户“拥有”(因此,我有一个名为User的实体)。 我有一个控制器AddSAIController.php,在那里我可以管理如何添加SAI。当我添加它时,我想显示一个表单,用户可以在其中输入SAI的序列号,并可以检查用户拥有该SAI的内容。问题是我的数据库中会有很多用户,我需要一个搜索者来更快地找到我想要的用户 首先,我尝试在上的文档之后创建复选框列表,我成功地向用户

我是Symfony 4的新手,我正在尝试在以下情况下创建一个带有搜索者的复选框列表:

我有一个名为SAI的实体,这个实体可能被许多用户“拥有”(因此,我有一个名为User的实体)。
我有一个控制器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制作一个块。非常感谢!