Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-06-2007 18:51:25

mbariou
Membre
Lieu: Palaiseau France
Date d'inscription: 09-06-2007
Messages: 40
Site web

[Zend_Controller][Zend_Controller_router] 1.0 RC1 ai perdu la route...

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

 

#2 11-06-2007 13:11:21

mbariou
Membre
Lieu: Palaiseau France
Date d'inscription: 09-06-2007
Messages: 40
Site web

Re: [Zend_Controller][Zend_Controller_router] 1.0 RC1 ai perdu la route...

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

 

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