Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Autres composants
Autres composants Forum de support sur les autres composants de Zend Framework.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/04/2007, 12h10   #1
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
Par défaut [0.9.2]Problème avec Zend_View

Bonjour,

j'essaie d'apprendre à utiliser le Zend Framework avec Zend-framework-getstarted. tout fonctionnement correctement jusqu'au Zend_View.

Mon problème survient lorsque je met en place la vue avec :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class IndexController extends Zend_Controller_Action
{
    function init()
    {
        $this->initView();
    }
    function indexAction()
    {
        $this->view->title = "Mes albums";
        $this->render();
    }
    function ajouterAction()
    {
        $this->view->title = "Ajouter un nouvel album";
        $this->render();
    }
    function modifierAction()
    {
        $this->view->title = "Modifier un album";
        $this->render();
    }
    function supprimerAction()
    {
        $this->view->title = "Supprimer un album";
        $this->render();
    }
}

Lors de l'exécution j'obtiens le message d'erreur suivant, on dirait que le framework ne trouve pas mes templates :

Citation:
Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'index/index.phtml' not found in path' in /var/www/zftuto/library/Zend/View/Abstract.php:807 Stack trace:
#0 /var/www/zftuto/library/Zend/View/Abstract.php(718): Zend_View_Abstract->_script('index/index.pht...')
#1 /var/www/zftuto/library/Zend/Controller/Action.php(203): Zend_View_Abstract->render('index/index.pht...')
#2 /var/www/zftuto/application/controllers/IndexController.php(11): Zend_Controller_Action->render()
#3 /var/www/zftuto/library/Zend/Controller/Action.php(501): IndexController->indexAction()
#4 /var/www/zftuto/library/Zend/Controller/Dispatcher/Standard.php(214): Zend_Controller_Action->dispatch('indexAction')
#5 /var/www/zftuto/library/Zend/Controller/Front.php(754): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 /var/www/zftuto/index.php(14): Zend_Controller_Front->dispatch()
#7 {main} thrown in /var/www/zftuto/library/Zend/View/Abstract.php on line 807

l'arboressence des répertoires est celle recommandée par le répertoire

le serveur tourne sous Ubuntu 6.10
avec Apache 2 et PHP 5.1.6


Merci d'avance pour vos réponse
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h27   #2
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Dans ton index.php tu dois avoir un truc de ce genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
require '../conf/php.conf.php';
require '../conf/db.conf.php';
require_once 'Zend.php';
 
Zend::loadClass('Zend_Controller_Front');
 
$controller=Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('monadresse/controllers');
 
Zend::loadClass('Zend_View');
$view1 = new Zend_View;
$view1->setScriptPath('monadresse/views/base');
Zend::register('maview',$view1);
Ensuite, dans ta page controller, par exemple

Code :
1
2
3
4
5
6
7
8
9
 
class IndexController extends Zend_Controller_Action
{
    function indexAction()
    {
   	Zend::registry('maview')->titre = "Mes albums";
	echo Zend::registry('maview')->render('mapage.php');
    }
}
Et dans ta page, mapage.php, tu utilise $this->titre pour récupérer "Mes albums".

J'espère que c'est un peu plus clair pour toi.
Sinon n'hésite pas.
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 14h32   #3
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
Merci de ta réponse.

Le tutorial parle d'une méthode où il n'est pas obligatoire de déclarer la vue pour chaque action.
Le framework serait capable d'appeler directement la bonne vue en fonction du nom de l'action ceci biensur en veillant à une bonne arboressence de l'appli.

La vue est initialisée grace à la méthode initView() qui est appelée dans la méthode init() du controleur.
Le framework appel ensuite le template, qui doit être dans le répertoire application/views/scripts, correspondant a l'action demandée.

Par exemple pour l'action ajouter de mon controlleur devrait appeler la page :
application/views/scripts/index/ajouter.phtml


Je vais essayé ta méthode pour vérifier le fonctinnement de mes scripts.
Par contre il semble que la classe Zend est deprecated depuis la version 0.9.0.
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 14h38   #4
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 526
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 526
Points : 548
Points : 548
Autre exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
class IndexController extends Zend_Controller_Action
{
	function init() {
		session_start();
		$view = Zend::registry('view');
}
function indexAction() {
		$view = Zend::registry('view');
		$view->probleme ="";
		$this->_response->setBody($view->render('montpl.tpl.php'));
	}
}
voila. bon dev'
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 12h02   #5
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
[tonChemin]/index/ajouter

En fait, je ne sais pas pourquoi, mais comme tu es dans IndexController et que tes fichiers de vues sont placées dans views/scripts/index . Tu es obligé de lui rajouter index pour lui dire où sont situés tes fichiers vues sinon essayes de les placer à la racine de view/scripts là il devrait les trouver facilement mais ça ne sera pas très propres
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 14h37   #6
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
j'ai essayé de déplacer mon répertoire index un peu partout dans l'arborescence de l'application en spécifiant le chemin ou non


Mais rien faire je n'arrive pas à trouver dans quel répertoire le framework ca chercher les fichiers à inclure
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 16h47   #7
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 526
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 526
Points : 548
Points : 548
Voici mon arborescence:
Citation:
root
1- application
2 - controllers = IndexController.php
2 - models = mes fichiers
2 - views = fichiers tpl
1 - public
2 - images
1 - library = zend framework
1 - index.php
et dans index.php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
error_reporting(E_STRICT|E_ALL);
date_default_timezone_set('Europe/London');
set_include_path('.' . PATH_SEPARATOR . './library'
. PATH_SEPARATOR . './application/models/'
. PATH_SEPARATOR . get_include_path());
include "Zend.php";
include_once("chemins_de_mon_appli.class.php");
include_once(chemins_de_mon_appli::COMMUNPATH."/Autrefichier_de const.class.php");
Zend::loadClass('Zend_Controller_Front');
//Zend::loadClass('Zend_Controller_RewriteRouter');
Zend::loadClass('Zend_View');
Zend::loadClass('Zend_Filter_Input');
//Enregistrer les données soumises par l'utilisateur
Zend::register('post',new Zend_Filter_Input($_POST,false));
Zend::register('get',new Zend_Filter_Input($_GET,false));
// register the view we are going to use
$view = new Zend_View();
$view->setScriptPath('./application/views');
Zend::register('view', $view);
//Stockage des valeurs générales de vue;
$view->msg_liste_vide = 'Aucun enregistrement trouvé dans la base' ;
$view->page_resultat = GlobalsString::PAGE_RESULTAT ;
$view->page_res_separator_of = GlobalsString::PAGE_RES_OF ;
$view->page_res_page = GlobalsString::PAGE_RES_PAGE ;
$view->page_res_separator = GlobalsString::PAGE_RES_SEPARATOR ;
// setup controller
$baseUrl = substr($_SERVER['PHP_SELF'], 0,
strpos($_SERVER['PHP_SELF'], '/index.php'));
//$route = new Zend_Controller_RewriteRouter();
$frontController = Zend_Controller_Front::getInstance();
$frontController->setBaseUrl($baseUrl);
$frontController->setControllerDirectory('./application/controllers');
$frontController->throwExceptions(true);
// run!
$frontController->dispatch();
voila si cela peut t'aider
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 20h40   #8
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Je t'ai donné mon arborescence sous forme d'image.


Moi aussi, je suis sous Ubuntu, j'avais la 6.10 et ça fonctionné je suis passé à la 7.04 ça fonctionne toujours
Je te donne aussi la configuration de mon virtualhost, bien sur il faut rajouter ce bout de code dans /etc/apache2/sites-available/zendTest et en faire un lien vers /etc/apache2/sites-enables/zendTest

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
NameVirtualHost zend
<VirtualHost 127.0.2.1>
	ServerAdmin xxx@yyyyy
 
	DocumentRoot /home/david/www/testZend 
	<Location /tutoriaux>
		RewriteEngine on
		RewriteBase /tutoriaux
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteRule . /tutoriaux/index.php [L]
	</Location>
 
	ErrorLog /var/log/apache2/tutoriaux.error.log
 
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel info
 
	CustomLog /var/log/apache2/tutoriaux.access.log combined
	ServerSignature On
 
</VirtualHost>
Il faut que tu rajoutes en plus des lignes que tu as dans le /etc/hosts :
Mon .htaccess
Code :
1
2
3
4
5
RewriteEngine on
RewriteRule .* index.php
 
php_flag magic_quotes_gpc off
php_flag register_globals off
Pour avoir accès à ton nouveau site http://zend/ et derrière il y aura tous les répertoires qui seront de nouveau programme de test pour ton zend framework.


J'espère qu'avec ça. Tu trouveras ton bonheur. Dans les deux cas dis nous si tu as trouvé.
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 12h08   #9
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
j'ai recréer un dossier en mettant la meme configuration que toi, au passage j'ai passé ma ubuntu en version 7.04.
Ma version de d'apache est bien 2.2 et php 5.2.1

mais malheureusement j'ai toujours le même message d'erreur

voila une copie de mon arborescence :


j'ai pourtant copié/collé les config que tu m'a mis juste au-dessus en les adaptant à ma config
mais rien à faire il ne trouve pas les templates
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 13h07   #10
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Cette ligne
Code :
DocumentRoot /home/david/www/testZend
tu l'as bien remplacé par
Code :
DocumentRoot /var/www/testZend/tutoriaux
et tu as bien redémarré ton serveur apache après.
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 13h35   #11
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
Citation:
Envoyé par davidbo5
Cette ligne
Code :
DocumentRoot /home/david/www/testZend
tu l'as bien remplacé par
Code :
DocumentRoot /var/www/testZend/tutoriaux
et tu as bien redémarré ton serveur apache après.
oui oui j'ai bien remplacé cette ligne

j'esserais sur une autre machine ce soir pour voir si le probleme persiste
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 14h15   #12
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Cette ligne
Code :
DocumentRoot /home/david/www/testZend
tu l'as bien remplacé par
Code :
DocumentRoot /var/www/testZend
et tu as bien redémarré ton serveur apache après.

Je me suis trompé ton répertoire "tutoriaux" ne dois pas être inscrit dans le virtualhost.
Après modification, si tu fais un http://zend/ , tu vois bien ton répertoire tutoriaux dans ton navigateur. Et si tu crées un fichier phpinfo.php avec
Code :
1
2
3
4
 
<?php
phpinfo()
?>
il s'exécute bien
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 08h30   #13
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
Pas de probleme pour l'exécution de phpinfo

voila le phpinfo de mon serveur

http://j.roc.free.fr/test.html
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 11h12   #14
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Code :
1
2
3
4
5
6
7
8
 
_SERVER["SERVER_NAME"]	127.0.0.1
_SERVER["SERVER_ADDR"]	127.0.0.1
_SERVER["SERVER_PORT"]	80
_SERVER["REMOTE_ADDR"]	127.0.0.1
_SERVER["DOCUMENT_ROOT"]	/var/www/
_SERVER["SERVER_ADMIN"]	webmaster@localhost
_SERVER["SCRIPT_FILENAME"]	/var/www/test.php
Ceci me dis que tu n'utilises pas le virtualhost que je t'ai fait créer tout spécialement pour ça
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 11h34   #15
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
petite erreur de ma part.
voila le phpinfo mis à jour

http://j.roc.free.fr/test.html

je signale quand meme que j'ai bien effectué les tests avec le virtualhost
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 12h15   #16
Membre du Club
 
Inscription : juillet 2003
Messages : 41
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 41
Points : 45
Points : 45
Quand tu fais
http://zend/tutoriaux/

Tu as toujours tes messages d'erreurs, si cela est le cas, essaye de renommer ton dossier tutoriaux en zf-tutorial et dis-moi ce que ça a fait.
davidbo5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 12h18   #17
Invité régulier
 
Inscription : mars 2006
Messages : 16
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2006
Messages : 16
Points : 6
Points : 6
Je viens de résoudre le problème par hasard

j'ai recréer tous mes templates à la main c'est à dire en tapant tout au clavier, pas en copier/coller.

j'ai également retapé le controleur et par miracle ca s'est mis à fonctionner.

Grand merci à tous ceux qui m'ont aider à résoudre se problème
j.roc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h28.


 
 
 
 
Partenaires

Hébergement Web