Bonjour,
Je suis entraine de développer mon site web, J'ai un problème avec la vérification d'un paramètre dans une url.

J'ai une vue Json. Les gens peut envoyer un paramètre qui est la limit. Je veux vérifier que celui-ci soit défini et type numérique.

j'ai essayer avec la fonction is_numeric() et pregre_match(); ça ne fonction pas.

http://local.dev/MusicalityMaker/tracks/all.json?limit=13

et non

http://local.dev/MusicalityMaker/tracks/all.json?limit=asfdsf

Il me retourne toujours 3.

J'ai mit un * où est la source de mon problème.

voici ma fonction :

public function all($limit = null){
        $limit = $this->params'url']'limit'];
// On trouve le nombre de donné dans la table tracks.
        $datas_size = $this->Track->find('count',array(
            'conditions' => array('Track.online'=>1)
        ));
// * On vérifie que la variable $limit est différent de null, on vérifie si la limit ne dépasse le tableau $data_size et on vérifie si la valuer du paramètre limit est numérique.
        if ($limit != null && $limit < sizeof($datas_size) && is_numeric($limit)) {
            $limit = $this->params'url']'limit']; // on limit selont le paramètre de limit demandé. Il ne faut pas qui dépasse la grossier de la table de donné.
        } else {
            $limit = 3; // On limit à 3 tracks
        }
        $tracks = $this->Track->find('all',array(
            'conditions' => array('Track.online'=>1),
            'fields' => array('Track.id','Track.sc','Track.sc_permalink_url','Track.name','Track.slug','Track.content','Track.thumb','Track.short_link','Track.share','Track.online','Track.created','Track.style_id'),
            'limit' => $limit,
        ));
        if(!$tracks){
            throw new NotFoundException("Track not found",404);
        }
        $this->set(compact('tracks'));
        $this->set('_serialize',array('tracks'));
    }

Merci.

4 réponses


Bonjour

t'as combien de tracks en ligne en base?

lakamark
Auteur

J'ai 5 tracks en ce moment, mais je le sait avec ceci

$datas_size = $this->Track->find('count',array(
            'conditions' => array('Track.online'=>1)
        ));

qui me retourne le nombre de donné dans ma table.

Bah ...

http://local.dev/MusicalityMaker/tracks/all.json?limit=13

if ($limit != null && $limit < sizeof($datas_size)

$limit n'est pas plus petit que 5 puisqu'il vaut 13.. donc ça passe dans le else..

C'est

$limit = $this->params['url']['limit'];

et non
$limit = $this->params'url']['limit'];