Aller au contenu

Question à la con


bensor

Messages recommandés

Voilà, je seche un peu sur un truc en particulier :ouioui: Préparant la mise en place de l'outil d'audience XITI sur le site que je suis en train de dévevlopper, j'aimerais spécifier en nom de page un truc du genre "nomducontrolleur_nomdel'action". Je sais comment récupérer ces deux valeurs par l'analyse de l'URL saisie, mais je suis sûr qu'il y a des fonctions de Zend Framework qui me permettent d'arriver plus simplement au même résultat. Seulement voilà, impossible de trouver les fonctions en question. Les seules solutions que j'ai trouvé sont "périmées", dans le sens où elles ne fonctionnent pas avec la version que j'ai. J'ai la version 1.0.2 pour information. Merci d'avance :chinois:

Lien vers le commentaire
Partager sur d’autres sites

bah t'as testé de te rajouter un routage du type

$route = new Zend_Controller_Router_Route_Regex(
'(.+)_(.+)',
array(),
array(
	1 => 'controller',
	2 => 'action'
),
'%s_%s'
);
$router->addRoute('default', $route);

J'ai fait ça au pif, je code plus en PHP depuis plus d'un an... mais ce que je sais c'est que ce que tu veux faire ça se fait via l'ajout d'un règle de routage.

Si tu vois pas pourquoi je te conseille vivement de réviser comment se déroule la phase de dispatch ;)

Lien vers le commentaire
Partager sur d’autres sites

bah t'as testé de te rajouter un routage du type

$route = new Zend_Controller_Router_Route_Regex(
'(.+)_(.+)',
array(),
array(
	1 => 'controller',
	2 => 'action'
),
'%s_%s'
);
$router->addRoute('default', $route);

J'ai fait ça au pif, je code plus en PHP depuis plus d'un an... mais ce que je sais c'est que ce que tu veux faire ça se fait via l'ajout d'un règle de routage.

Si tu vois pas pourquoi je te conseille vivement de réviser comment se déroule la phase de dispatch ;)

Ce que je veux faire, c'est récupérer les deux valeurs (avant le dispatch pour les envoyer à la vue tout le temps), pas modifier le routage :)

Lien vers le commentaire
Partager sur d’autres sites

bah je sais pas si j'ai bien compris ce que tu veux faire mais si c'est le cas alors je pense que tu as un mauvais design.

Tu devrais te faire un classe controller abstraite et injecter les données dans ta vue depuis cette classe (et surtout pas avant le dispatch!!!).

Dans la logique MVC, c'est le controlleur qui doit injecter les données dans la vue... et personne d'autre!!

Si tu t'es bien rajouté une règle de routage du genre l'exemple plus haut, tu peux récup le controller et l'action via $this->getRequest()->getControllerName()

edit pour illustrer:

abstractc class MyBaseController extends Zend_Controller
{
function init()
{
	$request = $this->getRequest();
	$view = $this->getView();
	$view->controller = $request->getControllerName();
	$view->action = $request->getActionName();
}
....
}

// puis tous tes controller dérivent de cette classe de base
class BlogController extends MyBasController { ... }

Lien vers le commentaire
Partager sur d’autres sites

(désolé pour le retard, la grippe ma tuer)

bah je sais pas si j'ai bien compris ce que tu veux faire mais si c'est le cas alors je pense que tu as un mauvais design.

Tu devrais te faire un classe controller abstraite et injecter les données dans ta vue depuis cette classe (et surtout pas avant le dispatch!!!).

Dans la logique MVC, c'est le controlleur qui doit injecter les données dans la vue... et personne d'autre!!

Si tu t'es bien rajouté une règle de routage du genre l'exemple plus haut, tu peux récup le controller et l'action via $this->getRequest()->getControllerName()

edit pour illustrer:

abstractc class MyBaseController extends Zend_Controller
{
function init()
{
	$request = $this->getRequest();
	$view = $this->getView();
	$view->controller = $request->getControllerName();
	$view->action = $request->getActionName();
}
....
}

// puis tous tes controller dérivent de cette classe de base
class BlogController extends MyBasController { ... }

Exact, j'y avais pas pensé :ouioui: Merci :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...