29-12-2010, 07:01 PM
Je peux t'aider si tu veux, vu que je bidouille sur Symfony 2 aussi là
Donc, tu peux déjà partir du faire et considérer que ton système de news est un bundle que tu pourras ensuite intégrer dans les applications que tu veux. Pour le moment je dis moi comment je ferais en tant que système autonome, il y a peut-être quelques légères différences après ou le positionner (dans /src/Application ou /src/Bundle).
Donc tu créer un dossier /src/Application/NewsBundle
Ensuite tu créer dans ce répertoire ces dossiers :
Controller/
Entity/
Resources/config/
Resources/views/
Ensuite un petit exemple pour créer ce qu'il faut pour afficher tes news.
Tu créer le fichier Controller/NewsController.php avec un truc du genre dedans :
Tu créer le modèle News que tu as utilisé dans ton controleur dans le fichier Entity/News.php
Et ensuite la vue que tu as utilisé dans ton controleur dans le fichier Resources/views/News/list.twig :
Et tu as une base
Donc, tu peux déjà partir du faire et considérer que ton système de news est un bundle que tu pourras ensuite intégrer dans les applications que tu veux. Pour le moment je dis moi comment je ferais en tant que système autonome, il y a peut-être quelques légères différences après ou le positionner (dans /src/Application ou /src/Bundle).
Donc tu créer un dossier /src/Application/NewsBundle
Ensuite tu créer dans ce répertoire ces dossiers :
Controller/
Entity/
Resources/config/
Resources/views/
Ensuite un petit exemple pour créer ce qu'il faut pour afficher tes news.
Tu créer le fichier Controller/NewsController.php avec un truc du genre dedans :
<?php
namespace Application\NewsBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class NewsController extends Controller
{
public function listAction()
{
$em = $this->get('doctrine.orm.entity_manager');
$monthNews = $em->createQuery('SELECT n FROM NewsBundle:News n WHERE n.month = :month ORDER BY n.date DESC')
->setParameter('month', date('M'))
->getResult();
return $this->render('NewsBundle:News:list.twig', array('monthNews' => $monthNews));
}
}
Tu créer le modèle News que tu as utilisé dans ton controleur dans le fichier Entity/News.php
<?php
namespace Application\NewsBundle\Entity;
/**
* @orm:Entity
*/
class News
{
/**
* @orm:Id
* @orm:Column(type="integer")
* @orm:GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @orm:Column(type="string")
*/
protected $title;
/**
* @orm:Column(type="string")
*/
protected $content;
/**
* @orm:column(type="integer")
*/
protected $month;
/**
* @orm:column(type="date")
*/
protected $date;
public function getTitle()
{
return strtoupper($this->title);
}
public function getDate()
{
return $this->date;
}
public function getContent()
{
return ucfirst($this->content);
}
}
Et ensuite la vue que tu as utilisé dans ton controleur dans le fichier Resources/views/News/list.twig :
{% extends "NewsBundle::layout.twig" %}
{% block content %}
<div class="news">
{% for news in monthNews %}
{{ news.title }} le {{ news.date }} : {{ news.content }}
{% endfor %}
</div>
{% endblock %}
Et tu as une base