Skip to content

Latest commit

 

History

History
185 lines (170 loc) · 4.93 KB

forms.md

File metadata and controls

185 lines (170 loc) · 4.93 KB

Formularios

Clase de boostrap col

Ejemplo para configurar la clase col de boostrap en el formulario

->add('text', 'text', array(
    'attr' => array(
        'col' => 'col-lg-6 col-md-6 col-sm-6',
    ),
))

Si es tipo Select2entityType ver mas abajo como configurar correctamente.

Clase de boostrap row

Ejemplo para configurar la clase row de boostrap en el formulario

...
use MWSimple\Bundle\AdminCrudBundle\Form\Type\FormrowType;
...
->add('formrow', FormrowType::class, array(
    'mapped' => false
))

Clase de boostrap inline

Si necesitamos que los checkbox o radio se ubiquen en linea

->add('checkbox', ChoiceType::class, array(
    'label_attr' => array(
        'class' => 'inline',
    ),
))

Campo tipo: mwspeso - Agrega el signo $ para un tipo numerico

Ejemplo de uso

->add('numero', \MWSimple\Bundle\AdminCrudBundle\Form\Type\PesoType::class)

Clase mws-datetime para tipo DateTime

Ejemplo de uso

->add('dateTime', DateTimeType::class, [
    'date_widget' => 'single_text',
    'time_widget' => 'text',
    'attr' => [
        'class' => 'mws-datetime',
    ],
])

Utilizar Editor de texto.

Recordar instalar assets

php bin/console ckeditor:install
php bin/console assets:install

You can configure config.yml

fos_ck_editor:
    autoload: false
    async: true

Campo CKEditorType::class Documentación. Ejemplo

use FOS\CKEditorBundle\Form\Type\CKEditorType;

$builder
    ->add('field', CKEditorType::class, array(
        'config' => array(
            'uiColor' => '#ffffff',
            //...
        ),
    ))
;

Utilizar DualList.

Campo tipo DualListType::class Documentación. Ejemplo

use MWSimple\Bundle\AdminCrudBundle\Form\Type\DualListType;

$builder
    ->add('field', DualListType::class, array(
        'class'    => 'AppDemoBundle:Entity',
        'choice_label' => 'name',
        'multiple' => true,
        'required' => false,
        'expanded' => true,
    ))
;

Usar Select2. Documentación

Implementar Select2 en un select normal agregando class mws_select2:

    $builder
        ->add('field', null, [
            'attr' => array(
                'class' => "mws_select2 col-lg-12 col-md-12",
                'col'   => "col-lg-8 col-md-8",
            )
        ])
    ;

Usar Select2 Entity. Documentación

En las Entities se requiere tener el mótodo toString() o se puede definir un metodo en el controller

public function __toString()
{
    return (string)$this->getId();
}

Opcional Personalizar el metodo en el controller:

public function getAutocompleteEntity(Request $request)
{
    ...
    $response = parent::getAutocompleteFormsMwsAction($request, $options, null, "getId");
    ...
}

Opcional Personalizar LIKE: start, end, equal, contains:

public function getAutocompleteEntity(Request $request)
{
    ...
    $response = parent::getAutocompleteFormsMwsAction($request, $options, null, null, "equal");
    ...
}

Si la entidad tiene relaciones en el Controlador se genera un método autocomplete. Se puede personalizar

public function getAutocompleteEntity(Request $request)
{
    $options = array(
        ...
        'field' => "id", #cambio del campo a utilizar para la búsqueda
    );
    ...
}

Personalizar la query agregando join, la variable $qb reescribe la original

public function getAutocompleteEntity(Request $request)
{
    $options = array(
        'repository' => "AppBundle:Example",
        'field'      => "id",
    );
    //querybuilder $qb
    $em = $this->getDoctrine()->getManager();

    $qb = $em->getRepository($options['repository'])->createQueryBuilder('a');
    $qb
        ->where("a.".$options['field']." LIKE :term")
        ->orderBy("a.".$options['field'], "ASC")
    ;
    //set querybuilder $qb
    $response = parent::getAutocompleteFormsMwsAction($request, $options, $qb);

    return $response;
}

Type Form. Configuración opcional desde la documentación tetranz/select2entity-bundle:

Type Form. Configuración correcta para el type select2 utilizando boostrap, usar 'class' y 'col'.

    $builder
        ->add('field', \Tetranz\Select2EntityBundle\Form\Type\Select2EntityType::class, array(
            //...
            'attr' => array(
                'class' => "col-lg-12 col-md-12",
                'col'   => "col-lg-8 col-md-8",
            )
        )
    ;

GitHub