ccc

Mostrando entradas con la etiqueta Symfony. Mostrar todas las entradas
Mostrando entradas con la etiqueta Symfony. Mostrar todas las entradas

Symfony: Hacer una query personalizada en el controller y pasar el resultado a la vista

En el controller:

$em = $this->getDoctrine()->getManager();
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT * FROM comments WHERE visible and id_producto = '".$product->getId()."' and origen = 'productos' order by fecha desc");
$statement->execute();
$arrComent = $statement->fetchAll();
// FinComentarios
$data["arrComent"] = $arrComent;

return $this->render($layoutPath, $data);

Symfony: Crear tus propias páginas

Importante: Nunca usar guiones (ni bajos ni normales) en los nombres. Da problemas.

Crear por ejemplo una página que liste actores:

a) Crear desde la consola en bundle si no existía ya de antes (por ejemplo cine\actoresBundle)

b) En /src/cine/actoresBundle/Resources/config/routing.yml añadir:
cineactores_listadoActores:
    pattern:  /listadoActores
    defaults: { _controller: cineactoresBundle:Default:listadoActores }

c) En /src/cine/actoresBundle/Controller/DefaultController.php añadir:

var $actores = array(
            array("id_actor" => "1", "nombre"=>"James Stewart"),
            array("id_actor" => "2", "nombre"=>"Gary Cooper"),
            array("id_actor" => "3", "nombre"=>"James Cagney")
        );


public function listadoActoresAction()
    {

        return $this->render('cineactoresBundle:Default:listadoActores.html.twig', array('actores' => $this->actores));
    }

d) Crear la vista  /src/cine/actoresBundle/Resources/views/Default/listadoActores.html.twig

<h1>Listado de actores</h1>
{% for actor in actores %}
    <div>{{actor.id_actor}} - {{actor.nombre}} </div>
{% endfor %}

Este código es twig (bastante parecido al PHP)

Documentación de Twig: http://twig.sensiolabs.org/documentation

Para ejecutarlo:
http://localhost/pruebasymfony/web/app_dev.php/listadoActores

-----------------------------------------------------------------------------
Si quisieramos mostrar los datos de un actor concreto:
En routing.yml añadir:
cineactores_showActor:
    pattern:  /showActor/{id_actor}
    defaults: { _controller: cineactoresBundle:Default:showActor }

En  el controlador DefaultController:
public function showActorAction($id_actor)
    {
        return $this->render('cineactoresBundle:Default:showActor.html.twig', array('actor' => $this->actores[$id_actor-1]));
    }

Crear la vista showActor.html.view:
<h1>Detalles del actor </h1>
<div>{{actor.id_actor}} - {{actor.nombre}} </div>

Para ejecutarlo:
http://localhost/pruebasymfony/web/app_dev.php/showActor/3

Symfony: Crear Bundle

Desde la consola ir a donde esté nuestro symfony instalado:
d:\wamp\www\pruebasymfony
y escribir:
php app/console generate:bundle

En bundle namespace especificamos la carpeta y el fichero, por ejemplo:
prueba1\ejemploBundle

Todo lo demás que nos va preguntando le damos a intro.

En "configuration format" escribir yml.

Generar la estructura completa de directorio: Yes

-------------------------------------------------------

Una vez creado nos habrá añadido nuestro nuevo bundle en:
/app/appKernel.php
/app/config/routing.yml
/src/ /* aquí habrá creado la carpeta con nuestro budle con el ejemplo de prueba de Hello */

Ahora cuando ejecutemos: http://localhost/pruebasymfony/web/app_dev.php/hello/pepeluis lo que hará será irse al routing de nuestro bundle:
/src/prueba1/ejemploBundle/Resources/config/routing.yml
Este carga su correspondiente controlador:
/src/prueba1/ejemploBundle/Controller/DefaultControler.php
Y este llama a su correspondiente vista:
/src/prueba1/ejemploBundle/Resources/views/Default/index.html.twig

---------------------------------------------------

Borrar un bundle en concreto 
en /src/ borrar físicamente la carpeta de ese bundle con todo lo que contiene
en /tests/ borrar físicamente la carpeta de ese bundle con todo lo que contiene
en /app/appKernel.php eliminar las líneas correspondientes de ese bundle
en  /app/config/routing.yml eliminar las líneas correspondientes de ese bundle
en  /app/config/config.yml eliminar las líneas correspondientes de ese bundle

Symfony 2: Instalación

http://www.maestrosdelweb.com/curso-symfony2-introduccion-instalacion/

Una vez tengas instalado el composer en tu ordenador y a la consola (en Windows 8.1 es Windows+R y escribir CMD).

Irte a donde quieras instalar el symfony:
d:\wamp\www

Y escribir:
composer create-project symfony/framework-standard-edition miprimersymfony 2.2.0 Por ejemplo para instalar la versión 2.6 sería:
composer create-project symfony/framework-standard-edition proyectolsg 2.6
Una vez instalado todo para comprobar que rula entrar en:
d:\wamp\www\miprimersymfony
y escribir:

php app\check.php

 
Si todo va bien te dira a todo OK.
 
Para ejecutarlo por primera vez crear en el wamp server el correspondiente directorio 
virtual tanto en hosts como en httpd.conf y ejecutar la web:

http://localhost/pruebasymfony/web/app_dev.php 


Te saldra la ventana de bienvenida desde donde gestionar ya todo.

-------------------------------

 
 Para empezar a hacer configuraciones (por ejemplo crear la BD):
http://localhost/pruebasymfony/web/config.php
Una vez configurada la BD guardar siempre el número secreto que nos den.
 
Para probar que funciona:
http://localhost/pruebasymfony/web/app_dev.php/demo/hello/Pepeluis

La configuración se puede crear o modificar si se prefiere directamente editando:
D:\wamp\www\pruebasymfony\app\config\parameters.yml
 
--------------------------------
 
IMPORTANTE: Modificar \web\app.php:
$kernel = new AppKernel('dev', true); // new AppKernel('prod', false);
 
-----------------------------------
 
Borrar la caché:
php app/console cache:clear
 
 

Otro método para hacer la instalación más rápida es:
Obtener el fichero de symfony con:
php -r "readfile('http://symfony.com/installer');" > symfony Y una vez obtenido copiarlo a c:\xampp\htdocs y desde allí ejecutar:
php symfony new lsg2_8 2.8
Modificar en app/config/parameters.yml la configuración correcta a la BD
Actualizar:
composer update
A partir de aquí:
http://symfony.com/doc/2.8/page_creation.html
Instalar el Sonata:
https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/installation.html

http://www.miguelvilata.com/blog/creando-un-proyecto-base-con-symfony-y-sonata-project