Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-04-2009 17:20:10

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

htaccess et controlleur par défaut

Bonjour,

j'utilise un htaccess tout ce qu'il y a de plus simple :

Code:

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

 

#2 23-04-2009 16:22:41

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

Je vois que je n'ai pas de réponse.
Même une hypothèse, je suis preneur.

Hors ligne

 

#3 23-04-2009 16:51:02

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: htaccess et controlleur par défaut

Quand tu dis que ça ne fonctionne pas, tu as quoi exactement ? page blanche ? erreur ? quelle erreur ?

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 23-04-2009 16:55:09

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

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

 

#5 23-04-2009 18:04:34

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: htaccess et controlleur par défaut

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

 

#6 23-04-2009 18:37:20

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

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

 

#7 23-04-2009 18:39:41

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: htaccess et controlleur par défaut

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

 

#8 24-04-2009 04:26:24

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: htaccess et controlleur par défaut

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

 

#9 24-04-2009 09:20:13

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: htaccess et controlleur par défaut

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

 

#10 24-04-2009 14:03:41

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: htaccess et controlleur par défaut

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

 

#11 24-04-2009 14:55:57

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: htaccess et controlleur par défaut

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

 

#12 25-04-2009 16:40:47

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: htaccess et controlleur par défaut

Oups c'est simple mais en relisant, ça semble compliqué !! tongue 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

 

#13 27-04-2009 17:23:51

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

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 :

Code:

<?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

 

#14 28-04-2009 13:30:12

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

Je bloque vraiment sur ce "default" obligatoire lorsque je veux appeler une action du controlleur "index".
Personne n'a une idée ?

Hors ligne

 

#15 28-04-2009 14:05:35

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: htaccess et controlleur par défaut

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

 

#16 28-04-2009 14:34:44

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

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

 

#17 28-04-2009 16:16:45

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: htaccess et controlleur par défaut

$rootPath = dirname(dirname(__FILE__));

c'est pas plutot :
$rootPath = realpath(dirname(__FILE__));

Hors ligne

 

#18 28-04-2009 16:26:50

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: htaccess et controlleur par défaut

bah non par ce que :

Code:

dirname(dirname(__FILE__))

donne ça = /home/national/sd/tsf/www
alors que

Code:

realpath(dirname(__FILE__))

donne = /home/national/sd/tsf/www/public

Il n'y a pas d'erreur la dessus.
wink

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages