Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Voilà mon .htaccess, a priori pas de pb
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
php_flag magic_quotes_gpc off
php_flag register_globals off
J'ai une première applications simple application CRUD (Creation, Reading, Update, Delete) dans une table, avec session, gestion des droits d'accès et permissions etc , j' ai rajouté des moteurs, de templates externes, de formulaires et de datagrid c'est OK
La structure des repertoires est la suivante :
zf_app1
index.php
applications
controllers
models
views
L'accès se fait par http://localhost/zf_app1/. Maintenant je veux évoluer
1 - D'abord je veux dupliquer <stong>applications<strong> en changeant le nom et avoir en final un accès, tantôt vers <strong> app1, </strong>tantôt vers <strong> appilcations</strong> (par défaut). Après duplication, la structure du répertoire racine (zf_app1) est la suivante. Le bootstrap index.php est commun, j'ai donc comme applications, le module par défaut <strong>applications</strong> et <strong>app1</strong>.
zf_app1
index.php
applications
controllers
models
views
app1
controllers
models
views
Dans le fichier index.php (boostrap) le répertoire par défaut est défini par
$router = new Zend_Controller_Router_Rewrite();
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array('default' => './applications/controllers',
'app1' => './app1/controllers'));
Le chemin qui est pris en permanence est le chemin par défaut dans les deux cas. En effet si je fais ceci :
$frontController->setControllerDirectory(array('default' => './app1/controllers'));
l'accès par http://localhost/zf_app1/ donne le même résultat qu'avec <strong>applications</strong> et c'est OK
Maintenant je souhaiterai passer indifféremment de <strong>applications</strong> (par défaut) à <strong>app1, app2, app3 </strong> en faisant par exemple :
http://localhost/zf_app1/app1 http://localhost/zf_app1/app2 http://localhost/zf_app1/app3 ,
J'ai lu les notes ZEND, le présent Forum qui aborde le problème à un niveau qui fait qu'il me manque certainement des informations plus basiques. J'ai fait des tentatives misérables rien ! Je ne vous montre pas car c'est nul...
Comment dois-je définir les routes pour y arriver, comment gérer cela par le routeur Zend ? Je suis un peu perdu ...
Merci pour votre aide
Marcel
Le fichier index est ici dans sa totalité
<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/Paris');
set_include_path('.' . PATH_SEPARATOR . './applications/models/'
. PATH_SEPARATOR . get_include_path().PATH_SEPARATOR . './app1/models/');
/**
* Build Acl
*/
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
require_once 'Zend/Acl/Role.php';
$acl->addRole(new Zend_Acl_Role('invité'))
->addRole(new Zend_Acl_Role('correcteur'))
->addRole(new Zend_Acl_Role('contrôleur'))
->addRole(new Zend_Acl_Role('éditeur'));
$parents = array('invité', 'correcteur', 'contrôleur', 'éditeur');
$acl->addRole(new Zend_Acl_Role('admin'), $parents);
require_once 'Zend/Acl/Resource.php';
$acl->add(new Zend_Acl_Resource('viewRecord'));
$acl->add(new Zend_Acl_Resource('editRecord'));
$acl->add(new Zend_Acl_Resource('deleteRecord'));
$acl->add(new Zend_Acl_Resource('publishRecord'));
$acl->add(new Zend_Acl_Resource('backupRecord'));
$acl->allow('invité', 'viewRecord');
$acl->deny('invité', 'editRecord');
$acl->deny('invité', 'deleteRecord');
$acl->deny('invité', 'publishRecord');
$acl->deny('invité', 'backupRecord');
$acl->allow('correcteur', 'editRecord');
$acl->allow('contrôleur', 'deleteRecord');
$acl->allow('éditeur', 'publishRecord');
$acl->allow('admin', 'backupRecord');
/**
* Active loader
*/
include "Zend/Loader.php";
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Config_Ini');
Zend_Loader::loadClass('Zend_Registry');
/**
* Active Template
*/
require_once '/etc/httpd/lib/php/HTML/Template/PHPLIB.php';
$path_to_tpl='/var/www/html/zf_app1/applications/views/scripts/index';
$tpl = new HTML_Template_PHPLIB($path_to_tpl , "remove");
/**
* Start form object
*/
require_once '/etc/httpd/lib/php/lib_forms/form.cls.php';
$form = new form ();
/**
* Load configuration
*/
$config = new Zend_Config_Ini('./applications/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
Zend_Registry::set('tpl', $tpl);
Zend_Registry::set('acl', $acl);
Zend_Registry::set('form', $form);
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table');
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Auth');
Zend_Loader::loadClass('Zend_Session');
Zend_Loader::loadClass('Zend_Session_Namespace');
Zend_Loader::loadClass('Zend_Controller_Router_Rewrite');
Zend_Session::start();
/**
* Setup database connector/ Adaptator
*/
$db = Zend_Db::factory($config->db->adapter, $config->db->config->asArray());
Zend_Db_Table::setDefaultAdapter($db);
$dbAdapter = Zend_Db::factory($config->db->adapter, $config->db->config->asArray());
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('db', $db);
Zend_Registry::set('dbAdapter', $dbAdapter);
/**
* Setup Controller
*/
$router = new Zend_Controller_Router_Rewrite();
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array('default' => './applications/controllers',
'app1' => './app1/controllers'));
/**
* Run application and dispatch
*/
$response=$frontController->dispatch();
Dernière modification par mbariou (Hier 05:10:08)
Dernière modification par mbariou (11-06-2007 13:10:45)
Hors ligne
As I've no response, I try different ways. For me I'm enable to understand the nuts and bolds of ZF routing, it's ancient greek before Socrate. I'm not clever enough
So I do the following, but as it's so simple I think I'am wrong somewhere, If you can tell me some clues about I thanks you :
First of all I guess my problem was not the good one, so I reorganze my directories and I 've :
ZF_Root_path
index.php <= The bootsrap index file
applications <= Main directory for applications
config.ini <= file
.htaccess <= file
controllers <= directory for applications
models <= directory for applications
views <= directory for applications
app1 <= directory for module app1
config.ini <= file for app1
.htaccess <= file
controllers <= directory for app1
models <= directory for app1
views <= directory for app1
app2 ..... <= directory for module app1
........
appn <= directory for module appn
Now in index.php <= The bootsrap index file, for the setup I've
/**
* Setup Controller
*/
//$router = new Zend_Controller_Router_Rewrite();
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array('default' => './applications/controllers',
'app1' => './applications/app1/controllers'));
........
Inside the directories of the modules of the module "app1", for auth and index controller, for the class name I add only the prefix "App1_" => App1_AuthController, App1_IndexController
In the different method I modify the different following lines :
$this->view->baseUrl = $this->_request->getBaseUrl(); => $this->view->baseUrl = $this->_request->getBaseUrl().'/app1';
$this->_redirect('/'); = > $this->_redirect('/app1');
That's all and It works with smart URL and so on, no route, no rewrite etc..
Please tell me, where am'I wrong ? My answer is too simple ! But it works.
Thanks for your help
Marcel
Dernière modification par mbariou (11-06-2007 13:17:18)
Hors ligne
Pages: 1