2010-07-21 7 views
0

J'utilise cakePHP 1.26.
La page Web s'est avérée vide lorsque j'ai essayé d'utiliser requestAction pour accéder à une fonction dans un COntroller à partir d'un fichier .ctp.
Voici le code:
L'utilisation de requestAction dans le fichier ctp et il s'est avéré une page blanche à la place

<?php 
class TestingController extends AppController { 

function hello($id=null){ 

      $IfLoggedIn=$this->Session->check('user'); 

      if($IfLoggedIn){ 
      //search the database 
      //$result=doing something from the search results 
      $this->set('userInfo',$result); 
      return "2"; 
      } 

      else if(!$IfLoggedIn && $id!=null){ 
      return "1"; 
      } 

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

puis dans le fichier default.ctp, je servais de la fonction définie ci-dessus:

<?php 
    $u = $this->requestAction('/hello'); 
    if($u=="2"){ 
    echo "welcome back, my friend"; 
    } 
    else{ 
    echo "Hello World"; 
    } 
?> 

Mais quand je charge une page Web, il était page blanche.

Je n'ai aucune idée de ce qui ne va pas dans le code.

+0

Définissez votre niveau de débogage sur 3 et indiquez les erreurs générées. Je soupçonne que la page est vierge, car vous supprimez les erreurs, que nous devons aider à déboguer. Merci! –

Répondre

1

Essayez d'ajouter

$u = $this->requestAction('/hello', array('return'=>true)); 

Check this

1

Vous pouvez essayer d'inclure le contrôleur dans le paramètre url de requestAction.

Si vous passez plus de temps à déboguer et à lire le manuel, vous en apprendrez plus, plus rapidement.

1

Je suis nouveau CakePHP moi-même, j'utilise 2.0 qui peut être différent dans votre version de gâteau.

Je trouve que le code suivant du manuel était mauvais pour moi:

<?php 
class PostsController extends AppController { 
    // ... 
    function index() { 
     $posts = $this->paginate(); 
     if ($this->request->is('requested')) { 
      return $posts; 
     } else { 
      $this->set('posts', $posts); 
     } 
    } 
} 

Vous avez besoin d'une légère modification (semble que le manuel était faux dans ce cas). Le code suivant a fonctionné pour moi:

<?php 
class PostsController extends AppController { 
    // ... 
    function index() { 
     $posts = $this->paginate(); 
     if (!empty($this->request->params['requested']) ) { // line here is different 
      return $posts; 
     } else { 
      $this->set('posts', $posts); 
     } 
    } 
} 

Nous ne devrions pas vérifierons pour le verbe HTTP demande, nous devrions vérifier si le paramètre de requête est vrai.

Voici un autre lien utile pour le manuel sur les paramètres de la requête: http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-request-parameters

espoir qui aide.