Sistema de blog altamente flexible para aplicaciones Symfony2.
No importa si quieres configurar tu registro personal o solo añadir una característica de blog/noticias a una aplicación Symfony2 existente.
La manera recomendable para instalar los paquetes de Sylius es usando Composer.
Añade las siguientes líneas a tu archivo composer.json.
"require": {
"sylius/blogger-bundle": "dev-master"
}
Corre la orden update para descargar el paquete y actualizar el cargador automático.
$ php composer.phar update
Si no estás utilizando el cargador automático proporcionado por Composer, necesitas registrar la ruta y espacio de nombres adecuado dentro de tu autoload.
Este paquete utiliza las bibliotecas Pagerfanta y PagerfantaBundle, sólo tienes que habilitarlas en el núcleo.
Puedes encontrar la guía de instalación aquí.
Finalmente, habilita el paquete del blog en el núcleo.
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
new Sylius\Bundle\BloggerBundle\SyliusBloggerBundle(),
);
}
Añade esto en la configuración de enrutado, por omisión en config.yml. Puedes personalizar los prefijos para cubrir tus necesidades.
sylius_blogger_post:
resource: @SyliusBloggerBundle/Resources/config/routing/frontend/post.yml
prefix: /blog
sylius_blogger_backend_post:
resource: @SyliusBloggerBundle/Resources/config/routing/backend/post.yml
prefix: /administration/blog/posts
O en formato XML.
<import resource="@SyliusBloggerBundle/Resources/config/routing/frontend/post.yml" prefix="/blog" />
<import resource="@SyliusBloggerBundle/Resources/config/routing/backend/post.yml" prefix="/administration/blog/posts" />
El siguiente paso requiere crear tu propia clase Post. Si estás usando el modelo del paquete padre, ovbiamente tienes que ponerlo bajo el espacio de nombres de ese paquete, pero en realidad el sitio no le importa a SyliusBloggerBundle.
<?php
namespace Acme\Bundle\BloggerBundle\Entity\Post;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Bundle\BloggerBundle\Entity\Post as BasePost;
class Post extends BasePost
{
}
Ahora tienes que asociar esta clase en Doctrine, pero únicamente necesitas asociar el ID, todo lo demás se hereda de la clase base.
Debemos hacerle conocer todas estas clases a Symfony2 y a SyliusBloggerBundle y configurar el único controlador compatible al momento. Dentro de la configuración de tu contenedor, por omisión config.yml, añade esto:
sylius_blogger:
driver: doctrine/orm
engine: twig
classes:
model:
post: Acme\Bundle\BloggerBundle\Entity\Post
La última cosa que necesitas hacer es actualizar el esquema de la base de datos.
Para el controlador de «doctrine/orm» ejecuta la siguiente orden:
$ php app/console doctrine:schema:update --force
Nota
Actualmente el paquete no incluye plantillas predefinidas.
Los nombres de plantilla concuerdan con los nombres del controlador y la acción, por lo tanto la plantilla para crear el mensaje será...
SyliusBloggerBundle:Backend/Post:create.html.twig
Puedes sustituirla con cualquier otra plantilla que quieras dentro de Symfony2.
Esta parte cubre algunos casos de uso comunes y la personalización.
Hay varias maneras de integrar este paquete en tu proyecto. Puedes crear tu paquete en la aplicación extendiendo el SyliusBloggerBundle. Este enfoque tiene algunos beneficios pero no todos prefieren crear muchos paquetes.
Si quieres añadir el paquete padre para organizar mejor el código, o esta es «tu manera» de hacer las cosas, recuerda poner el padre apropiado en él.
public function getParent()
{
return 'SyliusBloggerBundle';
}
Esto te permite reemplazar fácilmente las plantillas y organizar las cosas.
¿Quizás quieras modificar o extender el formulario del mensaje? Esto es realmente fácil y configurable. Puedes conseguir sustituir el formulario de dos maneras, si sólo necesitas añadir o quitar algunos campos, sin añadir ninguna dependencia al tipo del formulario, sencillamente crea tu propia clase PostType extendiéndola de Sylius.
<?php
namespace Acme\Bundle\BloggerBundle\Form\Type;
use Sylius\Bundle\BloggerBundle\Form\Type\PostType as BasePostType;
use Symfony\Component\Form\FormBuilder;
class PostType extends BasePostType
{
public function buildForm(FormBuilder $builder, array $options)
{
parent::buildForm($builder, $options);
$builder
->remove('author')
->add('enableRating', 'checkbox', array(
'required' => false
))
;
}
}
Luego, puedes poner esta clase para utilizarla al crear y actualizar el mensaje.
sylius_blogger:
classes:
form:
type:
post: Acme\Bundle\BloggerBundle\Form\Type\PostType
Ahora se utilizará tu formulario personalizado.
Si necesitas incluir algunos servicios personalizados en el tipo del formulario, deberías crear tu servicio y etquetalo como del tipo form utilizando su nombre...
sylius_blogger_post
Esto pondrá tu servicio de tipo form. Si utilizas este método, por favor recuerda pasar el nombre completamente cualificado de tu modelo del mensaje al constructor padre o la opción data_class del formulario.
Referencia completa de la configuración con valores predefinidos.
sylius_blogger:
driver: doctrine/orm
engine: twig
classes:
model:
post: ~
controller:
frontend:
post: Sylius\Bundle\BloggerBundle\Controller\Frontend\PostController
backend:
post: Sylius\Bundle\BloggerBundle\Controller\Backend\PostController
form:
type:
post: Application\Sylius\BloggerBundle\Form\Type\PostType
manipulator:
post: Sylius\Bundle\BloggerBundle\Manipulator\PostManipulator
Este paquete usa travis-ci.org para IC.
Antes de correr las pruebas, carga las dependencias usando Composer.
$ wget http://getcomposer.org/composer.phar $ php composer.phar install
Ahora puedes probar simplemente usando esta orden:
$ phpunit
Si quieres ver este y otros paquetes en acción, prueba la aplicación del entorno de pruebas Sylius.
Este paquete utiliza las incidencias de GitHub. Si encuentras un fallo, por favor crea una incidencia.