Modifiez le render depuis un component cakephp2.X

Par netdown, il y a 11 ans


Bonjour voila ce que j'aimerait faire , j'ai un composant qui ce charge dans mon controller celui-ci

    public function beforeRender(Controller $Controller)    
    {
    if($this->_protocoles=='ajax')
    {
    json_encode($this->_set['data']);       
    exit(); 
    }
    /////////////////////////:: protocole [http]
    $Controller->render('error/ma_page');   
}

Seulement le render me renvoit un belle pages blanches
un this->render() fonctionne a partir de mon controller

même si mon objectif , n'est pas celui-ci vu que j'ai obligatoirement besoin de gérez mon render depuis le composants !

Est ce possibles ?

Merci , bonne journée a vous

5 réponses

netdown, il y a 11 ans

Je désir avoir un affichages d'un rendu pas une redirection ....

snap, il y a 11 ans

Salut,
Si tu veux renvoyer vers une erreur le mieux (et le plus sécurisé) est d'envoyé une exeption.
Pour simuler le fait que la page n'existe pas:

throw new NotFoundException('Page Introuvable');

Tu peux aussi envoyer ForbiddenException ou autre

Si c'est pas que tu veux faire, il faut peut-être essayer d'ajouter un slash /:

$Controller->render('/error/ma_page');
netdown, il y a 11 ans

Non ce n'est pas ca ....

Ch0c4, il y a 11 ans

Salut, regarde l'api plutot sur beforeRender() enfaite il permet de faire des traitement sur les données, je te conseille plutot d'utiliser http://api.cakephp.org/2.6/class-Component.html#_beforeRedirect
qui lui va te rediriger si tu lui retourne un tableau avec la clé en l'url (je suis pas sur)

return array('url' => '/error/ma-page');

Sa doit te rediriger vers la page demander, si tu veux pas que sa te redirige tu renvoie null

netdown, il y a 11 ans

C'est bon j'ai trouvez la réponse , en faite c'était la partit shutdown dont il fallait ce servir
public function shutdown(Controller $Controller)
{
$Controller->render('Error/index_noResult');
}