Foros del Web » Programando para Internet » PHP » Symfony »

Fallo al renderizar un nuevo tipo de formulario.

Estas en el tema de Fallo al renderizar un nuevo tipo de formulario. en el foro de Symfony en Foros del Web. Buenas, he definido un tipo de formulario llamado "expansible" casi idéntico al de 'collection' predefinido de Symfony2 pero que usaré exclusivamente para que se muestre ...
  #1 (permalink)  
Antiguo 26/10/2013, 03:13
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Fallo al renderizar un nuevo tipo de formulario.

Buenas, he definido un tipo de formulario llamado "expansible" casi idéntico al de 'collection' predefinido de Symfony2 pero que usaré exclusivamente para que se muestre como un campo que -con ayuda de Javascript- pueda añadir o quitar campos. De esta manera pienso que podré usar el tipo 'expansible' para renderizar este tipo de formularios dinámicos y 'collection' para otras cosas.

El problema es que siguiendo la guía algo debo hacer mal pues creo que no me renderiza el tipo:

Código PHP:
<?php
// src/Brondem/FormBundle/Entity/Expansible.php
namespace BrondemFormBundleEntity;

use 
DoctrineCommonCollectionsArrayCollection;

class 
Expansible
{
    private 
$fields;

    public function 
__construct()
    {
        
$this->fields = new ArrayCollection();
    }

    public function 
getFields()
    {
        return 
$this->fields;
    }

    public function 
setFields$fields )
    {
        
$this->fields $fields;
    }
}
Código PHP:
<?php
// src/Brondem/FormBundle/Form/Type/ExpansibleType.php
namespace BrondemFormBundleFormType;

use 
SymfonyComponentFormAbstractType;
use 
SymfonyComponentFormFormBuilderInterface;
use 
SymfonyComponentOptionsResolverOptionsResolverInterface;
use 
BrondemFormBundleEntityExpansible;


class 
ExpansibleType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder->add'fields''collection', array(
                           
'type'         => $options['type'],
                           
'allow_add'    => true,
                           
'allow_delete' => true,
              ))->
add'add'   'button', array( 'label' => $options[   'add_label'] ) )
                ->
add'delete''button', array( 'label' => $options['delete_label'] ) );
    } 

    public function 
setDefaultOptions(OptionsResolverInterface $resolver)
    {
        
$expansible = new Expansible();
        
$expansible->getFields()->addnull );

        
$resolver->setDefaults(array(
            
'type'         => 'text',
            
'add_label'    => 'Add',
            
'delete_label' => 'Delete',
            
'data_class'   => 'Brondem\FormBundle\Entity\Expansible',
            
'data'         => $expansible,
        ));
    }

    public function 
getName()
    {
        return 
'expansible';
    }
}
Y aquí la plantilla para indicar como lo debo mostrar 'expansible'( es solo una prueba para ver si funciona)
Código PHP:
{# src/Brondem/FormBundle/Resources/views/Form/expansible_widget.html.twig #}
{% block expansible_widget %}
    <
div>Es una prueba</div>
{% 
endblock %} 
Luego tengo el controlador y la plantilla en otro bundle:
Código PHP:
<?php

// src/Brondem/AdminBundle/Controller/SliceManager.php
namespace BrondemAdminBundleController;

use 
SymfonyBundleFrameworkBundleControllerController;

//prueba
use BrondemFormBundleEntityExpansible;
use 
BrondemFormBundleFormTypeExpansibleType;

class 
SliceManagerController extends Controller
{
    function 
selectSectionActionRequest $request )
    {
        
$form $this->createForm(new ExpansibleType(), null, array( 
            
'add_label' => 'Añadir',
            
'delete_label' => 'Quitar',
        ));

        return 
$this->render('BrondemAdminBundle::test.html.twig', array(
            
'form' => $form->createView(),
        ));
    }
}
Código PHP:
{# src/Brondem/AdminBundle/Resources/views/test.html.twig #}

{% extends '::base.html.twig' %}

{% 
form_theme form 'BrondemFormBundle:Form:expansible_widget.html.twig' %}

{% 
block body %}
    {{ 
form(form) }}
{% 
endblock %} 
Sin embargo en vez de mostrárseme por pantalla "Es una prueba". Se muestra el formulario, tal cual.

¿Qués es lo que falla?

Un saludo!
  #2 (permalink)  
Antiguo 26/10/2013, 07:46
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Fallo al renderizar un nuevo tipo de formulario.

Edit.: He solucionado el problema. Era un problema de ubicar mal el lugar donde tenía las plantillas. Si se puede eliminar este post, mejor. Pues tampoco aporta nada.

Un saludo!

Última edición por Pantaláimon; 26/10/2013 a las 13:55

Etiquetas: fallo, renderizar, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:28.