Sujet : Règles de réécriture...

Bonjour,

Me revoilà pour de nouvelles aventure smile
J'attaque une application avec Hoa (la dernière version du trunk... peut-être un peu tôt?)
Je commence par recréer l'arborescence que voilà:

/Application
    /Controller
        /ErreurController
            IndexController.php
        /SpectaclesController
            IndexController.php
        ErreurController.php
        IndexController.php
        SpectaclesController.php
    /Model
    /View
        /MyTheme
            /ErreurView
                NotFoundAction.phtml
            /IndexView
                IndexAction.phtml
                TrucAction.phtml
            /SpectaclesView
                AgendaArchivesAction.phtml
                IndexAction.phtml
            FrontLayout.phtml
/Design
    ...
/Hoa_Framework
    ...
index.php

(ne tenez pas compte des différents controlleurs/actions, on va se concentrer pour l'instant sur l'index smile
Donc voici mon index.php:

<?php
 
/**
 * On redéfinit le chemin des inclusions de fichiers.
 */
set_include_path('./'              . PATH_SEPARATOR .
                 './Application' . PATH_SEPARATOR .
                 './Hoa_Framework' . PATH_SEPARATOR .
                 './Hoa_Framework/Framework' . PATH_SEPARATOR .
                 './Hoa_Framework/Framework/Core' . PATH_SEPARATOR .
                 get_include_path());
 
/**
 * On appelle le fichier principal du framework.
 */
require_once 'Framework.php';
 
 
/**
 * Définition du chemin d'inclusion client
 */ 
define('PATH_CLIENT', 'http://localhost/refonte_galap');


$parametre = array(
    // Type de routeur.
    'route.type'             => 'Rewrite',
 
    // Paramètres du routeur.
    'route.parameter'        => array(
 
        // Base du routeur.
        'base'               => '/devweb/refonte_galapa',
 
        // Ensemble des règles de réécriture.
        'rules'              => array(
 
            // Règle par défaut.
            'default'        => array(
                'pattern'    => '/(:module)/(:action).html',
                'default'    => array(
                    'module' => 'index',
                    'action' => 'index'
                )
            ),
 
            // Règle simple.
            'simple'         => array(
                'pattern'    => '/(:action).html',
                'default'    => array(
                    'module' => 'index',
                    'action' => 'index'
                )
            )
        )
    )
);


import('Controller.Front');

$controller = Hoa_Controller_Front::getInstance($parametre);
$controller->setThrowException(true);

try {
    $controller->dispatch();
} catch ( Hoa_Controller_Exception_ControllerIsNotFound $e ) {

    /**
    * Le dispatche n'a pas été possible,
    * car le contrôleur est introuvable.
    * On lance alors le contrôleur d'erreur.
    */
    $parametre = array(
        'data.array.personal' => array(
        'module' => 'erreur',
        'action' => 'notFound'
        )
    );
    
    /**
    * On ajoute notre requête, c'est à dire
    * que le seul contrôleur qui sera lancé
    * sera ErreurController avec l'action
    * PasTrouveAction.
    */
    $controller->addRequest(0, $parametre);
    $controller->dispatch();


}

exit();
?>

Et mon .htaccess:

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

Je croit que ça devrait suffire au niveau des fichiers...

Donc lorsque je me rend sur n'importe quelle url de l'application, j'ai le droit à ceci:

Uncaught exception : Hoa_Controller_Router_Rewrite::prepareASetOfRules: (2) Rules must be defined. in /var/www/devweb/refonte_galap/Hoa_Framework/Framework/Library/Controller/Router/Rewrite.php at 191.

Merci d'avance pour vos lumières wink

2

Re : Règles de réécriture...

Hey smile,

Je me penche sur ce problème ce soir, mais avec la 0.5 qui arrive, plusieurs choses vont changer (plus facile à manipuler).

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

3

Re : Règles de réécriture...

Wala, ma première intuition était juste. Le système de paramétrage des paquetages a changé, donc tu n'écris plus tes paramètres sous forme de tableau à n dimensions mais à 2 dimensions seulement.
Essaye plutôt :

array(
    'route.type' => 'Rewrite',
    'route.parameter.base' => '/devweb/refonte_galapa',
    'route.parameter.rules.default.pattern' => …
    'route.parameter.rules.default.default.module' => …
    'route.parameter.rules.default.default.action' => …
    'route.parameter.rules.simple.pattern' => …
    'route.parameter.rules.simple.default.module' => …
    'route.parameter.rules.simple.default.action' => …
);

Dans le doute, toujours regarder le fichier qui contient les configurations (écrites en dur, donc ici Framework/Library/Controller/Front.php) smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture...

Yep je regarde ce soir ou demain wink

(et je confirme, la notification par email ne fonctionne plus... sad )

5

Re : Règles de réécriture...

Pour moi ça marche. Étrange. Ton adresse est valide ? Tu coches bien la case : « S'inscrire au sujet » (ou un truc du genre) lors de l'envoi du poste ?

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture...

(je continue sur l'autre post pour les mails... http://hoa-project.net/Forum/topic/275/ … e-reponse/ )

EDIT:
Bon ALors pas moyen d'y arriver.... sad

Voilà la version finale de mon tableau de config:

    $parametres = array(
    'route.parameter.rules.default.pattern' => '/(:action).html',
    'route.parameter.rules.default.default.module' => '(:index:)',
    'route.parameter.rules.default.default.action' => '(:index:)'
);

J'ai essayé avec les deux points de chaque côté, les parenthèses, sans les parenthèses...
Je me retrouve soit avec une erreur du type:

Uncaught exception : Hoa_Framework_Parameter::zFormat: (2) Keyword index is not found in the parameter rule . in /var/www/devweb/refonte_galap/Hoa_Framework/Framework/Core/Framework.php at 693.

soit:

Uncaught exception : Hoa_Controller_Router_Rewrite::findTheRule: (4) Cannot split the new pattern : /:action).html. in /var/www/devweb/refonte_galap/Hoa_Framework/Framework/Library/Controller/Router/Rewrite.php at 265.

J'ai essayé de copier coller l'exemple du fichier que tu m'as dis... juste en changeant les chemins... échec...

merci d'avance pour tes lumières wink

Dernière fois dit par jojolapine (20 Oct. 2009 20:49)

Re : Règles de réécriture...

Euh en fait... il me semble que l'edit de mon précédent est passé inaperçu...
Du coup c'est comme un UP mais sans en être un wink

8

Re : Règles de réécriture...

As-tu regarder Front.php comme je te l'ai indiqué smile ?

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture...

Ben ui j'ai regardé, j'ai trouvé ça:

                /* Example of parameter for route.type = Rewrite.
                'route.type'           => 'Rewrite',
                'route.parameter.base' => '/MyBase',
                'route.parameter.rules.default.pattern' => '/(:module)/(:action).html',
                'route.parameter.rules.default.default.module' => '(:controller:)',
                'route.parameter.rules.default.default.action' => '(:action:)',
                */

Et même en copiant:/collant cet exemple, en changeant seulement le paramètre "base"...
J'ai les mêmes erreurs...

Uncaught exception : Hoa_Controller_Router_Rewrite::findTheRule: (4) Cannot split the new pattern : /:module)/:action).html. in /var/www/devweb/refonte_galap/Hoa_Framework/Framework/Library/Controller/Router/Rewrite.php at 265.

Et j'ai beau regarder le fichier susdit... à part peut-être "hoa://" je vois pas d'autres choses... sad
merci encore!

10

Re : Règles de réécriture...

Ok. Je fais des tests dès que possible smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »