Symfony_Form

Formularios en Symfony

Genere una nueva entidad dentro del bundle, se crea el directorio Entity y luego el archivo Task.php dentro de este.

O de manera más fácil, genere la entidad automáticamente con:

$ php app/console generate:doctrine:entity

Esta opción debe contar con la conexión a base de datos.

The Entity shortcut name: AppBundle:Formulario


New field name (press <return> to stop adding fields): task
Field type [string]: text
Is nullable [false]: 
Unique [false]: 

New field name (press <return> to stop adding fields): dueDate
Field type [string]: date
Is nullable [false]: 
Unique [false]:

Agregue una nueva acción a la clase del bundle donde desee el formulario:

//Importante el use
use AppBundle\Entity\Formulario;
//Tal vez necesites el request.

   /**
     * @Route("/glud", name="glud")
     */
    public function newAction(Request $request)
    {
        // crea una task y le asigna algunos datos ficticios para este ejemplo
        $formulario = new Formulario();
        $formulario->setTask('Write a blog post');
        $formulario->setDueDate(new \DateTime('tomorrow'));

        $form = $this->createFormBuilder($formulario)
            ->add('task', 'text')
            ->add('dueDate', 'date')
            ->add('save', 'submit')
            ->getForm();

        return $this->render('default/new.html.twig', array(
            'form' => $form->createView(),
        ));
    }

Crear una plantilla que visualice el formulario. Se puede crear en la ubicación app/Resources/views/default/new.html.twig y dentro de esta poner:

{{ form(form) }}

Se puede iniciar el servidor con symfony con el comando:

$ php app/console server:run 0.0.0.0:8000

Al realizar esto se puede acceder a la ruta:

http://localhost:8000/glud

Y con esto se puede observar el formuario.

Screenshot at 2016-05-19 15:11:29

Muchas gracias, espero que a alguien le sirva.

Grupo GNU/Linux Universidad Distrital FJC

Captura de pantalla de 2016-04-27 23-48-23

Cómo funciona la validación de campos en symfony

Lo primero que vamos a hacer es modificar los datos de conexión a la base de datos en la ruta app/config/parameters.yml

# This file is auto-generated during the composer install
parameters:
    database_driver: pdo_pgsql
    database_host: 127.0.0.1
    database_port: 5432
    database_name: eva
    database_user: usuarioeva
    database_password: mipassword

Después se modifica el archivo app/config/config.yml en sólo una sección:

# Doctrine Configuration
doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8

Creamos nuestro primer bundle:

php app/console generate:bundle --namespace=Acme/StoreBundle

Creamos una entidad para es bundle:

php app/console doctrine:generate:entity --entity="AcmeStoreBundle:Product"

Se ejecuta el comando para recrear los cambios en la base de datos que fue previamente creada:

php app/console doctrine:schema:create

Con esto creamos un CRUD de esa entidad llamad product:

php app/console generate:doctrine:crud --entity=AcmeStoreBundle:Product

Iniciamos nuestra instancia de symfony:

php app/console server:run 0.0.0.0:8081

Las validaciones se dan sobre el archivo src/Acme/StoreBundle/Controller/ProductController.php en el método del formulario src/Acme/StoreBundle/Controller/ProductController.php $form->isValid()

En cualquier línea de los diferentes formularios se puede hacer:

$product = new Product();
$validator = $this->get(‘validator’);
$errors = $validator->validate($product);

El resto de validaciones van del lado del servidor de bases de datos.

 

Symfony_Bundle

Como crear un bundle en symfony 2.8

Un bundle es algo similar a un plugin, o un paquete y es usado en symfony para guardar todo el código que generemos.

A continuación veremos lo fácil y rápido que se pueda crear uno mediante dos métodos.

  1. Mediante una herramienta que viene con symfony podemos crear y configurar un

A continuación nos situamos en la carpeta de un proyecto que ya hemos creado con el nombre de eva

y digitamos el siguiente comando para generar un bundle:

$ php app/console generate:bundle –namespace=Acme/HelloBundle –format=yml

 

Deberá aparecer el siguiente mensaje en pantalla:

bundle1

y dejamos todos los valores por defecto excepto la descripción a la que le vamos a poner bundlePrueba

bundle2

Si todo sale bien, en pantalla se muestra lo siguiente:

bundle3

 

2. El segundo método por el que podemos crear un bundle es de manera manual, aunque el trabajo es un poco más largo resulta ser igual de sencillo:

Primero creamos una carpeta dentro de el src. En nuestro caso la creamos con el nombre de “Acme” y dentro de esta creamos otra carpeta donde vamos a guardar nuestros bundles llamada “TestBundle” alli creamos un archivo llamado AcmeTextBundle.php en el que vamos a incluir el siguiente código

// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
…,

// registra tus bundles
new Acme\TestBundle\AcmeTestBundle(),
);
// …

return $bundles;
}

 

Guardamos el archivo y abrimos el archivo appKernel.php ubicado en app/ dentro del directorio de nuestro proyecto. y agregamos: “new Acme\TestBundle\AcmeTestBundle(),
” de manera que el archivo quede así

bundle4

Como vemos las dos maneras de generar bundles son realmente fáciles.

Aprende, y transmite lo que aprendas 🙂