Bonjour à tous,
Je revies sur CakePHP, ouou!! :o)
J'avais un site pour une amie en suivant les tutos de Grafikart.
J'ai mis en place un flux rss, et ca fonctionne (le site est encore en développement...)
Texte du lien
Maintenant, je fait fait un autre site pour mon école et j'ai aussi besoin d'un flux RSS et là ca fonctionne pas .o(
La diférence, c'est que je n'ai pas de page index. C'est a dire
www.monsite.ch/educations/index
C'est en fait un intranet ou il faut etre identifier pour acceder au page.
Donc des mes vues, j'ai quasiment que des pages member_edit.ctp.
J'ai donc deux roles, les 'admin' et les 'member'. Donc quand un utilisateur est authentifié comme 'member', il sera concerné par les pages du controller educations, ''member_index.ctp' et 'member_edit.ctp'.
Je prends l'exemple du controller 'educations', car c'est là que j'ai mon problème et je me demande si ce n'est à cause du fait que j'utilise les roles.
Donc mon problème, aucun flux n'est affiché!!
Si vous pouviez m'aider ca serait sympa.
Voici comment j'ai fait.
Attention, le flux est public! il faut que l'on doivent s'authentifier pour le lire, forcément.
Dans mon fichier /config/routes.php, j'ai ajouté ceci
Router::parseExtensions('rss');
Dans /View/Layout/rss/default.ctp, j'ai ceci
<?php
if (!isset($documentData)) {
$documentData = array(
'xmlns:dc' => 'http://purl.org/dc/elements/1.1/'
);
}
if (!isset($channelData)) {
$channelData = array();
}
if (!isset($channelData'title'])) {
$channelData'title'] = $title_for_layout;
}
$channel = $this->Rss->channel(array(), $channelData, $content_for_layout);
echo $this->Rss->document($documentData,$channel);
Dans mon controller 'educations', j'ai ajouté ce code:
/**
* Feed RSS
**/
function feed(){
if($this->RequestHandler->isRss()){
$d'educations'] = $this->Education->find('all',array(
'limit'=>20,
'order'=>'Education.until DESC',
'conditions' => array(
'Education.user_id'=>1,
'Education.active'=>1
)
));
// debug($d);
return $this->set($d);
}
}
Le debug($d) affiche bien ce que j'extrait de la base de donnée.
Aussi, au dbut du controller, j'ai aussi ceci
// Pour le flux RSS
public $components = array('RequestHandler');
Si non, je n'ai rien fait de plus dans le controller.
Ensuite j'ai créé un fichier dans la vues Educations
/View/Educations/rss/feed.ctp
et voici son contenu
<?php
debug("3");
$this->set('channelData', array(
'title' => __('Derniers EDUC'),
//'link' => $this->Html->url(array('controller'=>'educations','action'=>'index'), true), // Le true ajout l'URL absolue
// 'link' => $this->Html->url('http://www.google.ch'), true),
'description' => __("Notre flux RSS"),
'language' => 'fr-fr')
);
foreach($educations as $k=>$v){ $v = current($v);
debug($v);
echo $this->Rss->item(array(), array(
'title' => $v'name'],
//'link' => $this->Html->url($v'link'], true),
// 'link' => $this->Html->url('http://www.hello-web.net', true),
'guid' => array('url' => $this->Html->url($v'link'], true), 'isPermaLink' => 'true'), // Le lien permanent
'description' => $v'location'],
// 'pubDate' => $v'created']
'pubDate' => $v'until']
));
}
Le premier truc qui me surprends, c'est que le
debug("3");
Ne s'affiche pas!!!
Le deuxième, j'ai bien un page flux rss, mais rien n'est affiché, alors que
debug($d);
afiche bien un réaultat.
Ai-je oublié de faire quelque chose?
Es-ce un problème de droit?
Que pourriez-vous me dire?
Milles mercis
Ok j'ai trouvé
cette ligne me causait un problème
'guid' => array('url' => $this->Html->url($v'link'], true), 'isPermaLink' => 'true'), // Le lien permanent
En effet
$v'link']
n'existe pas.
Je pense que 'guid', n'est pas obligatoire, si je ne mets pas cette ligne? J'ai pas besoin de lien.