2011-02-23 6 views
0

J'ai un problème avec la transmission de variables à travers des vues. Mais, d'abord un codeKohana - Vues dans les vues

// i enter the url http://localhost/my_projects/blog/index/index 
// classes/controller/index.php 
class Controller_Index extends Controller 
{ 
    protected $rendered_view; 

    public function before() 
    { 
     $this->rendered_view = View::factory('index') 
       ->set('head', View::factory('subpages/head') 
           ->set('title', 'Site title') 
        ) 
       ->set('nav', View::factory('subpages/nav') 
           ->set('title', 'Site title') 
        ) 
       ->set('header', View::factory('subpages/header') 
           ->set('h1', 'Header H1') 
        ) 
       ->set('sidebar', View::factory('subpages/sidebar') 
           ->set('h1', 'Header H1') 
        ) 
       ->set('content', View::factory('subpages/content') 
           ->set('h2', 'Header H2') 
           ->set('content', 'some content') 
        ) 
       ->set('footer', View::factory('subpages/footer') 
           ->set('footer', 'some footer') 
        ); 
    } 

    public function action_index() 
    { 
     $this->response->body($this->rendered_view); 
    } 
} 

Et dans l'index de vue i passer des variables à la vue par défaut:

// views/index.php 
echo View::factory('default')->set('head', $head); 
echo View::factory('default')->set('nav', $nav); 
echo View::factory('default')->set('header', $header); 
echo View::factory('default')->set('sidebar', $sidebar); 
echo View::factory('default')->set('content', $content); 
echo View::factory('default')->set('footer', $footer); 

Et j'essayer en mode affichage i essayer des variables "echo":

// views/default.php 
echo $head; 
echo $nav; 
echo $header; 
echo $sidebar; 
echo $content; 
echo $footer; 

Et il erreur de renvoi:

ErrorException [ 2 ]: file_put_contents(/some_path/application/logs/2011/02/23.php): failed to open stream: Permission denied ~ SYSPATH/classes/kohana/log/file.php [ 81 ] 

Si j'écris quelque chose comme ça:

// views/default.php 
include Kohana::find_file('views', 'default'); 

l'affichage est valide;

+1

Juste une note - votre code 'de before' doit être déplacé' action_index() 'et' action_index() 'à' après() '. Et n'oubliez pas les appels 'parent :: before()'/'parent :: after()'! – biakaveron

+0

Mais je voulais définir des valeurs par défaut pour les vues et si cela devrait être changé dans d'autres méthodes, alors il sera changé et je n'ai pas besoin de définir d'autres valeurs qui seront les mêmes pour diverses méthodes. – PaulP

Répondre

1

chmod 777 fichier /some_path/application/logs/2011/02/23.php et tout répertoire /some_path/application/logs/ récursive

UPD:

peut-être

// views/index.php 
echo View::factory('default') 
->set('head', $head) 
->set('nav', $nav) 
->set('header', $header) 
->set('sidebar', $sidebar) 
->set('content', $content) 
->set('footer', $footer); 
+0

Très étrange maintenant il ne peut pas voir la variable dans la vue par défaut: ErrorException [Avis]: Variable indéfinie: nav | ErrorException [Notice]: Variable indéfinie: tête – PaulP

+0

@paulp, mise à jour du message – delphist

+0

Merci. Je suis encore en train d'apprendre ceci: D. – PaulP

0

Ce qui se passe est Kohana est de lancer une exception et d'essayer de se connecter l'erreur, mais peut Ne sauvegardez pas le fichier journal.

Assurez-vous que/application/logs est accessible en écriture (755, 777 ou sur certains serveurs)

+0

Je l'ai déjà fait, mais il génère quelques erreurs: ErrorException [Notice]: Variable indéfinie: nav | ErrorException [Notice]: Variable indéfinie: tête – PaulP