Bonjour,

Voilà un moment que je n'ai plus mis les pied sur CakePHP et je dois m'y remettre. Je dois faire un changement un peu urgent concernant un flux RSS.

Ce que je fais

J'extrais des informations d'une base de donnée et je l'affiche en flux RSS
Voici le code de mon controller

/**
    * Feed RSS
    **/
    function feed($id=null){

        if($id==null){
            $id = 0;    
        } else if( $id == 0){

            if($this->RequestHandler->isRss()){

                $d['user'] = $this->User->find('all',array(
                    'limit'=>100,
                    'conditions' => array(
                        'User.former'=>1
                    )
                ));
            }

        }else{
            if($this->RequestHandler->isRss()){

                $d['user'] = $this->User->find('all',array(
                    'limit'=>100,
                    'conditions' => array(
                        'User.id'=>$id
                    )
                ));
            }
        }

        return $this->set($d);

    }

et voici le code de mon fichier feed.cpt

<?php

    $this->set('channelData', array(
        'title' => __('Users interest'),
        'link' => $this->Html->url(array('controller'=>'users','action'=>'index'), true), // Le true ajout l'URL absolue
        'description' => __("Flux User interest"),
        'language' => 'fr-fr')
    );

      foreach($user as $k=>$v){ $v = current($v);

        if($v['former'] == 1)
        {
            $description = "former ".$v['fonction_id'];
        }
        else
        {
            $description = "<img src='http://www.site.ites.ddd.ch/files/Images/People/".$v['id'].".jpg' style='width:150px;float:left;margin-right:20px;margin-bottom:10px;' />eeeee".$v['interest'];
        }

        echo  $this->Rss->item(array(), array(
            'title' => $v['firstname'].' '.$v['lastname'],
            'link' => $this->Html->url('http://www.site.ites.ddd.ch/users/index/'.$v['id'], false),
            'guid' => array('url' => $this->Html->url('/', true), 'isPermaLink' => 'false'), // Le lien permanent
            'description' =>  $description,
           // 'pubDate' => $v['created']
            'pubDate' => "2014-09-23" // This is hidden from the CQ5 web site
        ));
    }

Ce que je veux

Cette partie affiche en fait un id

 if($v['former'] == 1)
        {
            $description = "function: ".$v['fonction_id'];
        }

qui fait le lien avec ma table fonctions qui contient seulement deux colonnes : id et name.

Pour le moment ca m'affiche "function: 4", ou "function: 2",

Mais j'aimerais avoir "function : secretary", ou "function: administrator".

Je ne sais pas pourquoi, mais pour admin_edit(), ca fonctionne, mais pas pour feed().

Merci pour vos lumières

2 réponses


En fait, j'ai trouvé. J'ai ajouté
$this->loadModel('Fonction');
$d['fonctions'] = $this->Fonction->find('list',array('order'=>'name ASC'));

function feed($id=null){

        if($id==null){
            $id = 0;    
        } else if( $id == 0){

            if($this->RequestHandler->isRss()){

                $d['user'] = $this->User->find('all',array(
                    'limit'=>100,
                    'conditions' => array(
                        'User.former'=>1
                    )
                ));

                $this->loadModel('Fonction');
                // Le list recupere la valeur des IDs et cherche un champs qui a la valeur "name"
                $d['fonctions'] = $this->Fonction->find('list',array('order'=>'name ASC'));

            }

        }else{
            if($this->RequestHandler->isRss()){

                $d['user'] = $this->User->find('all',array(
                    'limit'=>100,
                    'conditions' => array(
                        'User.id'=>$id
                    )
                ));
            }
        }

Bonjour.
Puisque ton problème est solutionné, marques le sujet comme résolu sur ton dernier post.