Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
j'utilise un htaccess tout ce qu'il y a de plus simple :
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.php
Tout fonctionne parfaitement sauf quand je souhaite executer une action du controlleur par défaut (index).
Ex : http://www.jbunel-creations.com/public/index/contact
Je ne comprends pas pourquoi.
Hors ligne
Quand tu dis que ça ne fonctionne pas, tu as quoi exactement ? page blanche ? erreur ? quelle erreur ?
A+, Philippe
Hors ligne
J'ai une erreur 404 NOT FOUND.
EX : http://www.jbunel-creations.com/public/index/contact
J'ai cette erreur : The requested URL /public/index/contact was not found on this server.
Alors que pour "http://www.jbunel-creations.com/public/photo/list"
La page s'affiche sans problème.
Hors ligne
celle-ci fonctionne :
http://www.jbunel-creations.com/public/default/index/contact
ne suis pas ce lien (magouille pour un affichage complet) mais celui ci :
http://www.jbunel-creations.com/public/ … ex/contact
Dernière modification par baboune (23-04-2009 18:06:08)
Hors ligne
Il faut obligatoirement indiquer "default" lorsque on utilise le controlleur par défaut.
Il faut donc préciser le "module" dans ce cas là.
Il doit bien y avoir un moyen de passer outre ?
Hors ligne
tu utilise zend_Controller_Router ?
je pense que le problème vient de ton repertoire public, c'est une idée
Dernière modification par baboune (23-04-2009 18:41:04)
Hors ligne
C'est bizarre que tes liens fonctionnels soit comme cela:
http://www.jbunel-creations.com/public/ … ex/contact
au lieu de:
http://www.jbunel-creations.com/index/contact
Peut-être que c'est un problème dans l'arborescence du projet, dans l'endroit ou se trouve ton index.php (boots) ou bien un problème dans les "path" dans ton index...
Moi jme suis toujours basé sur le QuickStart du site du framework pour ma structure...
Hors ligne
si ton projet est dans public et non dans le documentRoot de ton server il faut passer le chemin /public/ au frontcontroller dans setBaseUrl
A+JYT
Hors ligne
Mon index est dans public mais je fais pointer le root du serveur dans public et dans l'index, je remonte dans mes "path" et ainsi, je sauve le /public/ de l'url.
Hors ligne
prends le tuto sur le site de Zend et installe le tel quel tu vas comprendre comment ça marche
ensuite tu poura jouer sur les hiérarchie différentes pour faire ce que tu veux.
mais commence par faire simple car j'ai l'impression que tu mets les choses en essayant sans comprendre.
A+JYT
Hors ligne
Oups c'est simple mais en relisant, ça semble compliqué !! Ouais en fait c'est avec ce tuto que j'ai commencé ! Maintenant, tout fonctionne...heh presque...reste un basePath pour mon fckEditor a trouver
Hors ligne
Bonjour,
J'ai suivi le quickstart de la documentation mais j'ai toujours le problème de spécifier le module dans l'url quand je veux appeler une action du contrôleur index.
voici mon bootstrap :
<?php // définition des chemins utiles ******************************************** $rootPath = dirname(dirname(__FILE__)); $appPath = $rootPath . DIRECTORY_SEPARATOR . 'application'; $confPath = $appPath . DIRECTORY_SEPARATOR . 'config'; $publicPath = $rootPath . DIRECTORY_SEPARATOR . 'public'; /** ** LES TAILLES D'IMAGE **/ define('LARGEUR_MINI', 80); define('LARGEUR_WEB', 200); define('BASE_FILE', '/home/jbunelcr/www/'); define('REP_PHOTO', BASE_FILE.'public/photos/'); define('REP_PHOTO_MINI', REP_PHOTO.'mini/'); define('REP_PHOTO_WEB', REP_PHOTO.'web/'); define('REP_PHOTO_ARCHIVES', REP_PHOTO.'archives/'); // configuration de l'include_path PHP pour l'autoload set_include_path(get_include_path() . PATH_SEPARATOR . $appPath . PATH_SEPARATOR . $rootPath . DIRECTORY_SEPARATOR . 'library' . PATH_SEPARATOR . $appPath . DIRECTORY_SEPARATOR . 'models'); // Utilisation de Zend_Loader ******************************************** require_once('Zend/Loader.php'); // Chargement automatique des classes ******************************************** Zend_Loader::registerAutoload(); Zend_Registry::set("publicPath", $publicPath); // Utilisation de Zend_config pour une config générale ******************************************** $configMain = new Zend_Config_Ini($confPath."/config.ini", 'dev'); // Utilisation de Zend_config pour une config de la session ******************************************** $configSession = new Zend_Config_Ini($confPath."/session.ini", 'dev'); Zend_Session::setOptions($configSession->toArray()); $session = new Zend_Session_Namespace($configSession->name); // Utilisation de Zend_Log ******************************************** $log = new Zend_Log($writer = new Zend_Log_Writer_Stream($configMain->logfile)); // Ajout de paramètres à enregistrer, adresse IP et navigateur ******************************************** $log->setEventItem("user_agent", $_SERVER['HTTP_USER_AGENT']); $log->setEventItem("client_ip", $_SERVER['REMOTE_ADDR']); // Ajout des paramètres à écrire dans le format du journal à écrire ******************************************** $defaultFormat = Zend_Log_Formatter_Simple::DEFAULT_FORMAT; $format = "%client_ip% %user_agent%".$defaultFormat; // Ajout de format au journal de log ******************************************** $writer->setFormatter(new Zend_Log_Formatter_Simple($format)); // Partage du log en registre ******************************************** Zend_Registry::set("log", $log); /** * Enregistrement des ACLs (des droits utilisateurs) en session */ if(!isset($session->acl)) { $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role("user")); $acl->add(new Zend_Acl_Resource("produits")); $acl->add(new Zend_Acl_Resource("rubriques")); $acl->add(new Zend_Acl_Resource("familles")); $session->acl = $acl; } // Partage de l'objet de session en registre ******************************************** Zend_Registry::set("session", $session); /** * Mettre les métadonnées utilisées par Zend_Db_Table en cache */ /*$frontendOptions = array("automatic_serialization" => true, "lifetime" => 1000); $cache = Zend_Cache::factory("Core", "APC", $frontendOptions, array()); Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);*/ /** * Définition de la locale */ // Locale par défaut $locale = new Zend_Locale(); // Partage de la locale actuelle pour tous les composants l'utilisant Zend_Registry::set('Zend_Locale', $locale->getLanguage()); /** * Déclaration de la gestion des langues */ // Déclaration d'un objet Zend_Translate $translate = new Zend_Translate("tmx", $appPath."/languages", null, array("scan" => Zend_Translate::LOCALE_FILENAME)); $french = array('Value is empty, but a non-empty value is required'=>'Valeur vide', "Value is required and can't be empty"=>'Valeur requise', 'Tokens do not match'=>'Session expirée', "'%value%' is greater than %max% characters long"=>"'%value%' dépasse 25 caractères", "'%value%' does not fit given date format"=>"'%value%' n'a pas le format d'une date valide"); $english = array("Salle :"=>"Room :", "Utilisation :"=>"Usage :", "Du :"=>"From :", "Au :"=>"To :"); $translateForm = new Zend_Translate('array', $french, 'fr'); $translateForm->getAdapter()->addTranslation($english ,'en'); //Détection de la langue locale $langLocale = isset($session->lang) ? $session->lang : $locale->getLanguage(); // Passage de la locale en cours à Zend_Translate $translate->setLocale($langLocale); $translateForm->setLocale($langLocale); //$translate->setLocale("en"); // Passage de l'instance de l'objet cache à Zend_Translate //$translate->setCache($cacheInstance); // Partage de l'objet translate précédemment créé Zend_Registry::set("Zend_Translate", $translate); // Passage de l'objet translate à divers composant Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Form::setDefaultTranslator($translateForm); try { $db = Zend_Db::factory($configMain->database); $db->getConnection(); Zend_Db_Table_Abstract::setDefaultAdapter($db); Zend_Registry::set("db", $db); } catch (Zend_Db_Exception $e) { echo $e->getMessage(); } // Déclaration du layout dans le bootstrap Zend_Layout::startMvc(array("layoutPath" => $appPath."/views/layouts")); //Ajout du chemin des aides d'action dans le gestionnaire d'aides MVC Zend_Controller_Action_HelperBroker::addPrefix("My_Controller_ActionHelpers"); // Appel du contrôleur frontal $frontController = Zend_Controller_Front::getInstance(); $frontController->setControllerDirectory($appPath.'/controllers'); //$frontController->setBaseUrl("/public"); $frontController->throwExceptions(false); // Propagation des paramètres dans le système MVC $frontController->setParam('debug', $configMain->debug); $frontController->setParam('locale', $locale); $frontController->setParam('config', $configMain); // Enregistrement du plugin de sauvegarde de la page précédente $plugin = new My_Controller_Plugins_Session; $frontController->registerPlugin($plugin); // Configuration d'un entête de réponse HTTP global $response = new Zend_Controller_Response_Http(); $response->setRawHeader("Content-type: text/html; charset=utf-8"); // Passage de la réponse configurée au système MVC $frontController->setResponse($response); /** * Utilisation de l'aide de pagination */ Zend_Paginator::setDefaultScrollingStyle("Sliding"); Zend_View_Helper_PaginationControl::setDefaultViewPartial('common/pagination_control.phtml'); /** * Définition de routes personnalisées */ // Extraction de l'objet router $router = $frontController->getRouter(); // Définition et ajout de routes contact $configRoutes = new Zend_Config_Ini($confPath."/routes.ini"); // ConfigRoutes est un objet de Zend_Config $router->addConfig($configRoutes, 'routes'); /** * Déclaration du plugin dans le bootstrap */ $frontController->registerPlugin(new My_Controller_Plugins_Session()); /** * Configuration de la vue avant d'appeler la méthode dispatch() */ $view = new Zend_View(); $view->setEncoding('UTF-8'); $view->strictVars((bool) $configMain->debug); $vR = Zend_Controller_Action_HelperBroker::getStaticHelper("ViewRenderer"); $vR->setView($view); // Lancement de l'application au travers du contrôleur frontal try { $frontController->dispatch(); } catch(Zend_Exception $e) { $log->crit($e); }
Exemple de soucis :
mauvaise url : http://tsf.nationale13.net/index/contact
bonne url : http://tsf.nationale13.net/default/index/contact
Merci a tous pour vos réponses.
Julien
Hors ligne
je pense que ca vient de ton sous domaine 'tsf'. comment tu redirige vers ton sous domaine.
Si tu veut te simplifier la vie, tu crées un Controlleur 'ContactController' avec une action index et ton url a première vue marchera : http://tsf.nationale13.net/contact
Hors ligne
Sur un domaine aussi cela ne fonctionne pas.
Bonne url : http://www.jbunel-creations.com/default/index/contact
Mauvaise url : http://www.jbunel-creations.com/index/contact
Et puis créer un contrôleur pour afficher une simple adresse me parait beaucoup de code pour pas grand chose.
Merci pour ta réponse baboune.
Hors ligne
$rootPath = dirname(dirname(__FILE__));
c'est pas plutot :
$rootPath = realpath(dirname(__FILE__));
Hors ligne
bah non par ce que :
dirname(dirname(__FILE__))
donne ça = /home/national/sd/tsf/www
alors que
realpath(dirname(__FILE__))
donne = /home/national/sd/tsf/www/public
Il n'y a pas d'erreur la dessus.
Hors ligne
Pages: 1