Bonsoir,
En voulant créer un router interne pour économiser de la place dans routing.yml, j'ai rencontré un problème assez étrange.
Le contexte:
Dans le routing j'ai une déclaration de la route vers l'affichage des articles:
listArticles:L'url du type http://domaine.com/articles/ville/2/...se/1/title/asc est traité par mon router mRouteClass. Dedans la méthode matchersUrl() traite cette requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 url: /articles/:showBy/:somethinkId/:somethinkName/:page/:sortBy/:sortType param: {module: Articles, action: ShowDefault} class: mRouteClass requirements: showBy: (ville|type) somethinkId: \d+ somethinkName: \S+ page: \d+ sortBy: \S+ sortType: (desc|asc)
Vers la fin elle "forwarde" la requête vers l'action définie (dans notre cas ce sera l'action News et la méthode ListNews). Elle est bien appelée. Le router marche correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public function matchesUrl($url, $context = array()) { $parameters = parent::matchesUrl($url, $context); if(count($parameters) > 1) { $action = $parameters['action']; foreach($parameters as $p => $parameter) { sfContext::getInstance()->getRequest()->setParameter($p, $parameter); } sfContext::getInstance()->getRequest()->setParameter('setRender', 1); sfContext::getInstance()->getController()->forward($this->routesMap[$action][$parameters['showBy']]['module'], $this->routesMap[$action][$parameters['showBy']]['action']); } return $parameters; }
Le problème commence quand je tenter de récupérer les données des utilisateurs connectés. Quand j'initialise la session, je reçois un message d'erreur:
Quand je tente à récupérer l'id de l'utilisateur connecté, là aussi je reçois un message d'erreur:Argument 2 passed to sfBasicSecurityUser::initialize() must be an instance of sfStorage
Est-ce que vous auriez une idée de l'origine du problème avec la session qui ne passe pas avec le forward ?Call to a member function getAttribute() on a non-object
Cordialement.
Partager