2010-11-01 23 views
0

Le code suivant génère une page non trouvée erreur avec Kohana 2.3.4méthode d'appel dans la méthode Kohana php 2.3.4

class Search_Core 
{  
    public function result($term) 
     { 
      $this->search->title = "Search Results"; 
      $this->search->content = View::factory("search_view"); 

      $test = $this->pleaseWork("This should be on the screen"); 
      $this->search->content->test = $test; 

      return $this->search; 
     } 

    public function pleaseWork($word) 
     { 
      $dude = $word; 

      return $dude; 
     } 

} 

J'ai appelé méthodes dans les méthodes de la même classe avant, mais pour certains raison pour laquelle cela ne fonctionne pas. Je peux remplacer la variable de test $ par quelque chose comme ceci:

$test = "a bunch of random words"; 

Et cela ne fonctionnera pas. Je peux écrire quelque chose de similaire en dehors de Kohana et ça marchera, mais ce n'est pas le cas et je ne sais pas pourquoi. La variable $ test est dans la vue search_view et comme je l'ai démontré, cela fonctionne si je fournis une chaîne plutôt que d'appeler une méthode.

L'erreur est en ligne Kohana.php # 841.

Répondre

0

j'ai pu obtenir ce travail en utilisant

$test = Search::pleaseWork("This should be on the screen"); 

au lieu du

$test = $this->pleaseWork("This should be on the screen"); 

Cependant, je voudrais encore originale de savoir pourquoi il n'a pas fonctionné à l'origine. Cela a-t-il quelque chose à voir avec ceci étant une bibliothèque que j'appelle depuis un contrôleur? Je ne peux pas m'imaginer pourquoi le $ devrait référencer la bibliothèque.

+0

essayez d'ajouter un constructeur à la classe de bibliothèque. Si Search :: pleasework fonctionne, alors la classe est regardée à travers une référence statique! – zerodin

+0

Je vais essayer ça merci – anthony

0

Du nom de la classe, il semble être une bibliothèque. vous devriez appeler la bibliothèque à partir d'un contrôleur qui rend une vue. Je ne pense pas qu'une bibliothèque peut rendre une vue.

+0

La bibliothèque est appelée par un contrôleur. Il rend bien lorsque la variable de test $ est une chaîne. – anthony