Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Je suis débutant avec le Framework Zend et je viens de commencer
à développer une structure pour gérer mon back et front office.
J'ai essayé de découper l'application de façon modulaire.
Je suis malheureusement obligé à cause de mon hébergeur de mettre tous
les fichiers à découvert dans le www.
répertoire principal : monsite/www
---------------------------------------------
> application
-> admin
-> Dossier Controllers
-> Dossier Layouts
-> Dossier Models
-> Dossier Views
-> bootstrap.php
-> défaults
-> Dossier Controllers
-> Dossier Layouts
-> Dossier Models
-> Dossier Views
-> bootstrap.php
> library
> admin
-> index.php
> public
-> index.php
-> htaccess
---------------------------------------------
Que mettre dans le fichier htaccess dans mon dossier public ?
J'arrive parfaitement à lire l'adresse suivante :
-> "monsite/admin/controller/action" (www.monsite/admin/controller)
mais pas l'adresse suivant :
-> "monsite/controller/action" (www.monsite/controller)
Je peux la lire seulement en rajoutant le répertoire "public" avec :
-> "monsite/public/controller/action"
En fin de compte, je voudrais cacher mon répertoire "public" et le protéger !
Vous remerciant pour votre réponse.
Hors ligne
Autre petit problème, quand je veux lire une action, le layout s'enlève !!!
Au niveau des controllers s'est impeccable, mais quand je mets action, plus rien, plus de style.
Par contre les views sont présents.
Quelqu'un a-t-il déjà eu ce problème ?
Hors ligne
tu part sur une fausse route
soit tout ton code est dans la hérarchie de ton htdocs
>htdocs -> application -> admin -> Dossier Controllers -> Dossier Layouts -> Dossier Models -> Dossier Views -> Dossier Controllers -> Dossier Layouts -> Dossier Models -> Dossier Views -> bootstrap.php -> library ->public (pour les css js et img) -> index.php -> htaccess
soit seul ton dossier public est dans le htdocs
> application -> admin -> Dossier Controllers -> Dossier Layouts -> Dossier Models -> Dossier Views -> Dossier Controllers -> Dossier Layouts -> Dossier Models -> Dossier Views -> bootstrap.php > library > htdocs ->public (pour les css js et img) -> index.php -> htaccess
tu ne dois avoir qu'un bootstrap et un index.php
dans ton .htaccess tu renvois toujours sur index qui lui ne fait que charger le bootstrap
dans le bootstrap tu ajout les module comme Admin (default est par défaut) et tu utilise Zend_Acl pour fixer les droit sur tes modules et/ou contrôleurs
et c'est tout
A+JYT
Hors ligne
Merci sekaijin pour ta réponse.
Mais comment faire pour rajouter dans le bootstrap le module Admin ? et default par défaults ?
Pas évident de démarrer ...
Hors ligne
J'ai utilisé cette technique pour avoir un css et un layout différent dans mon espace back office !
Comment modifier également le Layout pour le module Admin ?
Hors ligne
Si c'est juste pour le layout et les css, il me semble plus simple de les changer dans les controllers. Quitte à utiliser une classe dérivée de Zend_Controller_Abstract différente pour front et backoffice.
Hors ligne
sur le frontController tu as une methode addModuleDirectory
http://framework.zend.com/manual/en/zen … dular.html
http://framework.zend.com/manual/en/zen … oller.html
A+JYT
Hors ligne
sekaijin, je viens de mettre tout le code dans la hiérarchie de ton htdocs.
Par contre, tout fonctionne bien, sauf quand je mets une autre action qu'index et le css du layout ne s'affiche pas !!
En regardant le code source, le lien css et le contenu du layout est bon pourtant !! bizarre.
Peut être un problème de répertoire ?
Hors ligne
Ce qui est bizarre :
htdocs/controller/
Ca fonctionne bien , par contre :
htdocs/controller/index ou
htdocs/controller/action
le CSS du Layout ne s'affiche pas !
Mon index va chercher mon bootstrapp dans le dossier application
Hors ligne
Autre petit problème, décidement, j'ai toujours mon problème d'affichage.
Je viens de rajouter un module avec :
$frontController->setControllerDirectory(array(
'default' => 'application/default/controllers',
'admin' => 'application/admin/controllers'
));
et j'ai un message d'erreur :
array(3) {
["controller"]=>
string(1) "s"
["action"]=>
string(5) "index"
["module"]=>
string(7) "default"
}
Bizarre le controller avec un "s" ?
J'ai rajouter un :
$frontController->setBaseUrl('localhost/htdocs/');
sans succès .......
Hors ligne
Cette exception est levée quand je tape : htdocs/presentation. Je suis dans le dossier principal "default" avec un controlleur appeler "presentation" (donc presentation>index).
Hors ligne
infdou a écrit:
Autre petit problème, décidement, j'ai toujours mon problème d'affichage.
Je viens de rajouter un module avec :
$frontController->setControllerDirectory(array(
'default' => 'application/default/controllers',
'admin' => 'application/admin/controllers'
));
et j'ai un message d'erreur :
array(3) {
["controller"]=>
string(1) "s"
["action"]=>
string(5) "index"
["module"]=>
string(7) "default"
}
Bizarre le controller avec un "s" ?
J'ai rajouter un :
$frontController->setBaseUrl('localhost/htdocs/');
sans succès .......
$frontController->setBaseUrl('/');
A+JYT
Hors ligne
ca marche que si je mets : $frontController->setBaseUrl('/htdocs/');
Mais j'aurais certainement un problème pour le mettre en ligne dans le répertoire de mon hébergeur !
Hors ligne
Je suis completement perdu, ca ne marche plus : le fichier index :
(J'ai utilisé ta hiérarchie de ton htdocs)
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application/')); set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR . APPLICATION_PATH . '/default/models/' . PATH_SEPARATOR . get_include_path()); require_once "Zend/Loader.php"; Zend_Loader::registerAutoload(); try { require 'application/bootstrap.php'; } catch (Exception $exception) { echo '<html><body><center>' . 'An exception occured while bootstrapping the application.'; if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production' ) { echo '<br /><br />' . $exception->getMessage() . '<br />' . '<div align="left">Stack Trace:' . '<pre>' . $exception->getTraceAsString() . '</pre></div>'; } echo '</center></body></html>'; exit(1); } Zend_Controller_Front::getInstance()->dispatch();
et voici le code Bootstrap, je suis dans le dossier -> htdocs/Application :
defined('APPLICATION_PATH') or define('APPLICATION_PATH', dirname(__FILE__)); defined('APPLICATION_ENVIRONMENT') or define('APPLICATION_ENVIRONMENT', 'development'); Zend_Layout::startMvc(APPLICATION_PATH . '/layouts/scripts'); $view = Zend_Layout::getMvcInstance()->getView(); $view->doctype('XHTML1_STRICT'); $frontController = Zend_Controller_Front::getInstance(); $frontController->setBaseUrl('/'); $frontController->setControllerDirectory(array( 'default' => 'application/default/controllers', 'admin' => 'application/admin/controllers' )); $frontController->setParam('env', APPLICATION_ENVIRONMENT); $configuration = new Zend_Config_Ini( APPLICATION_PATH . '/config/app.ini', APPLICATION_ENVIRONMENT ); $registry = Zend_Registry::getInstance(); $registry->configuration = $configuration; unset($frontController, $view, $configuration, $registry);
1) Si je fais : $frontController->setBaseUrl('htdocs/'); ca fonctionne sur l'index normal par défaut.
Mais bon, en ligne dans le répertoire par défaut www, je ne sais pas ce que je vais mettre ??
2) De plus, quand je fais "htdocs//controller/action", je n'ai pas d'affichage de mon css ?
3) le "htdocs//admin/controller/action" me renvoi
une erreur sur l'index "Parse error: parse error in C:\wamp\www\htdocs\application\admin\controllers\IndexController.php on line 25 ?? J'ai relu et repris un autre controller sans succès !!
Hors ligne
Bizarre, aucune reponse ... J'ai mis exactement le bootstrap dans le dossier application et l'index dans le répertoire générale (pas de public, car je suis sur un hébergement mutualisé) ...
Dernière modification par infdou (28-04-2009 13:49:15)
Hors ligne
Pages: 1