-
Notifications
You must be signed in to change notification settings - Fork 20
Basic use
Nek- edited this page Nov 10, 2012
·
17 revisions
The FeedBundle needs to be configured to recognized your feeds. This is an exemple of possible configuration:
nekland_feed:
feeds:
post:
class: Nekland\BlogBundle\Entity\Post
title: 'My fabulous posts'
description: 'Here are my very fabulous posts'
# usally the homepage
url: 'http://www.my-website.com'
language: 'fr'
filename: "blog.|format|"
The filename is the name of your generate final file. The localisation of files is defined by a parameter: "nekland_feed.feeds.base_path" and the default value is "%kernel.root_dir%/../web/feeds"
In this case we are using a model as item class for the feed. We have to declare it. You must implement ItemInterface:
class Post implements ItemInterface
{
// Implement the needed methods
}
Configuration is over. You can make feeds when you want. They are generally used in a controller.
- Get the feed factory:
$factory = $this->get('nekland_feed.factory');
This initialize the feed factory. 2. Load a feed:
// "post" is the name of the feed in the configuration
$factory->load('post', 'rss_file');
// For this example we are using rss_file but this is the default value, and if you extend the bundle you can use another loader
You can also load an atom_file or both (recommanded if you use the AtomInterface). This load your file in memory. After that you can use orther methods on the feed you load.
- Get the feed (here "post") and add, remove or replace the item you want.
// Get an object "Feed" who contains your feed "post"
$feed = $factory->get('post');
$feed->add($post); // add an ItemInterface to your feed
$feed->remove($id); // Remove an item with his id
$feed->replace($id, $post); // Replace an item identified by his id with the given item
- Render ! The following instruction save your feed in a file (who is specified in configuration)
$factory->render('post', 'rss'); // we want to render the feed into rss format but you can use the atom format