Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/10/2013, 04:55
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 5 meses
Puntos: 32
Parametrización de la clase formulario: $options

Buenas.

Leyendo la documentación de [URL="http://symfony.com/doc/current/book/forms.html"]formularios de symfony2[/URL] en la sección de "Creating Form Classes" muestra un ejemplo sencillo de cómo encapsular la creación de un formulario dentro de una clase.

Código PHP:
class TaskType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder->add('task')
            ->
add('dueDate'null, array('widget' => 'single_text'))
            ->
add('save''submit');
    }
    ...

El problema es que no menciona para que puede servir el parametro $options de la clase buildForm. De manera que me es dificil suponer como debo manejar el parámetro $options del método buildForm()

El problema es que yo quiero crear una clase en que uno de los campos dependa de una consulta en la base de datos:
Código PHP:
// src/Brondem/AdminBundle/Form/Type/SectionType.php
namespace BrondemAdminBundleFormType;
 
use 
SymfonyComponentFormAbstractType;
use 
SymfonyComponentFormFormBuilderInterface;

class 
SectionType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder
            
->add('host''choice', array( 'choices' => $options['vars']['hosts'] ))
            
// ...etc
    
}

    
// ...etc

Código PHP:
namespace BrondemAdminBundleController;

use 
SymfonyBundleFrameworkBundleControllerController;
use 
BrondemAdminBundleEntityFormsSection;
use 
BrondemAdminBundleFormTypeSectionType;

class 
SliceManagerController extends Controller
{
    function 
selectSectionActionRequest $request )
    {
        
        
// consulta a la base de datos
        // ...
        // creacion del array $select_hosts en funcion de la consulta
        // ...
        // creación del parametro $options
        
$options = array( 
            
'vars' => array(
                
'hosts' => $select_hosts,
                ),
        );
        
$form $this->createForm(new SectionType(), new Section(), $options );
        
        
// ...etc
    
}
    
// ...etc

Sin embargo me envia este error:
Código PHP:
Ver original
  1. The option "vars" does not exist. Known options are: "action", "attr", "auto_initialize", "block_name", "by_reference", "cascade_validation", "compound", "constraints", "csrf_field_name", "csrf_message", "csrf_protection", "csrf_provider", "data", "data_class", "disabled", "empty_data", "error_bubbling", "error_mapping", "extra_fields_message", "inherit_data", "intention", "invalid_message", "invalid_message_parameters", "label", "label_attr", "mapped", "max_length", "method", "pattern", "post_max_size_message", "property_path", "read_only", "required", "translation_domain", "trim", "validation_groups", "virtual"
  2. 500 Internal Server Error - InvalidOptionsException

Entonces, me gustaría donde encontrar información del parámetro $options. Y, en todo caso, me gustaría saber como parametrizar la clase formulario para hacerla reutilizable.

Un saludo y gracias!