Symfony - установите флажок ВСЕ - PullRequest
0 голосов
/ 02 июля 2018

У меня есть флажок множественного выбора в SYMFONY, в построителе форм, но я хочу иметь 'select all', который выбирает весь выбор моей сущности.

Я пробую много решений с помощью jquery, но ничего не получается.

вот мой код контроллера

<?php

namespace AdminBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

use Symfony\Bridge\Doctrine\Form\Type\EntityType;

use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;

use Symfony\Component\Form\Extension\Core\Type\ChoiceType;


use Symfony\Component\Validator\Constraints as Assert;

use AdminBundle\Entity\Equipments;

use AdminBundle\Repository\Metier;



class EquipementsController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */



    public function indexAction(Request $request)
    {


            //$metiers = $this->getDoctrine()->getManager()->getRepository('AdminBundle:Metier')->getForSearch();


            $form = $this->createFormBuilder()

                    ->add('metier', EntityType::class, array('class' => 'AdminBundle:Metier', 'choice_label' => 'name','required' => false, 'expanded' => true,  'placeholder' => 'Tous', 'multiple' => true, 

и моя веточка

{{ form_start(form) }}
{{ form_errors(form) }}
<fieldset><legend><b>Filière</b></legend>
    {{ form_row(form.metier) }}
</fieldset>  

<fieldset><legend><b>Opération</b></legend> 
        {{ form_row(form.operation) }}
</fieldset>  
{{ form(form) }}
{{ form_end(form) }}

1 Ответ

0 голосов
/ 02 июля 2018

Настройте шаблон веточки, чтобы включить флажок для выбора всех:

{{ form.row(form.checkboxes, {'attr': {'class': 'class-name-of-checkboxes'} }) }}

<input type="checkbox" id="select-all" name="select-all" /> Select All

Изменение .checkboxes на соответствующее поле формы для ваших флажков. То, что сделано выше, это добавление класса к входу с именем class-name-of-checkboxes (измените на что-нибудь более подходящее, например form-checkbox).

Затем добавляется флажок, который не имеет отношения к каким-либо данным формы, все, что он делает, это добавляет флажок с идентификатором select-all, чтобы позволить пользователю выбрать все флажки одновременно.

затем jQuery:

$('#select-all').on('change', function()
{
    if ($(this).is(':checked')) {
        $('.class-name-of-checkboxes').attr('checked', 'checked')
    }
})

Затем jQuery использует .on('change') на объекте флажка $('#select-all') для запуска функции. Если флажок установлен, добавьте атрибут checked="checked" ко всем входам с классом .class-name-of-checkboxes

рефы: * * тысяча двадцать-одны

https://api.jquery.com/attr/

https://api.jquery.com/is/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...