Para crear un formulario obviamente antes tenemos que tener creadas las entidades y que se hayan generado las correspondientes tablas en la base de datos.
Ejemplo de Crear un formulario para la entidad Peliculas
Desde la consola ejecutar:
php app/console doctrine:generate:form edcpeliculasBundle:cineastas
Esto te creará un fichero llamado cineastasType.php dentro de la carpeta form
Abrirmos ese fichero cineastasType.php y personalizamos el buildForm a nuestro gusto:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nombre')
->add('guardar', 'submit')
;
}
En el routing:
edcpeliculas_formAddCineasta:
path: /peliculas/formAddCineasta
defaults: { _controller: edcpeliculasBundle:Default:formAddCineasta }
En el controller del default:
// *********************************************
public function formAddCineastaAction(Request $request)
{
$cineastaAux = new cineastas();
$form = $this->createForm(new cineastasType(), $cineastaAux);
$form->handleRequest($request);
if($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($cineastaAux);
$em->flush();
return $this->redirect($this->generateUrl('edcpeliculas_listarCineastas'));
}
return $this->render("edcpeliculasBundle:Default:formAddCineasta.html.twig",
array("formAux"=>$form->createView()));
}
Vista formAddCineasta.html.twig
{% extends 'edcpeliculasBundle::viewEDC.html.twig' %}
{% block body %}
{{ parent() }}
{# form(formAux) #}
{# dump(formAux) #}
<h1>AÑADIR CINEASTA</h1>
{{ form_start(formAux) }}
<p>Nombre cineasta: {{form_widget(formAux.nombre)}}</p>
<p>
<hr />
{{form_widget(formAux.guardar)}}
</p>
{{ form_end(formAux) }}
{% endblock %}
En cuanto al proceso para listar las películas sería:En el routing:
edcpeliculas_listarCineastas:
path: /peliculas/listarCineastas
defaults: { _controller: edcpeliculasBundle:Default:listarCineastas }
En el controller:
// *********************************************
public function listarCineastasAction()
{
$em = $this->getDoctrine()->getManager();
$repositorio = $em->getRepository('edcpeliculasBundle:cineastas');
$arrCineastas = $repositorio->findAll();
return $this->render('edcpeliculasBundle:Default:listarCineastas.html.twig',
array('cineastas' => $arrCineastas));
}
En la vista listarCineastas.html.twig:
{% extends 'edcpeliculasBundle::viewEDC.html.twig' %}
{% block body %}
{{ parent() }}
<h1>Listado de cineastass</h1>
{# dump(cineastas) #}
{% for cineasta in cineastas %}
<p>
{{cineasta.nombre}} <br>
</p>
<hr>
{% endfor %}
{% endblock %}
No hay comentarios:
Publicar un comentario