ekino / ekino-wordpress-symfony

43 stars 13 forks source link

missing something #4

Open Draeli opened 10 years ago

Draeli commented 10 years ago

Dans un thème que j'ai créé pour l'occasion, j'utilise :

$sfServiceRouter = \symfony_service('router');
echo $sfServiceRouter->generate('draeli_front_default_mentionslegales');

Je m'attendrais assez logiquement à avoir un chemin sous la forme : http://localhost/repertoire_work/web/front/mentions-legales mais au lieu de ça j'ai : http://localhost/mentions-legales comme si la route "oubliait" une partie des informations en cours de route alors que je n'ai pas ce soucis bien sûr sous Sf (version 2.5.3).

J'ai commencé à regarder le core.php et j'arrive presque à avoir ce que je veux en remplaçant :

$kernel->boot();

$sfContainer = $kernel->getContainer();
$sfContainer->enterScope('request');
$request = new \Symfony\Component\HttpFoundation\Request();
$sfContainer->set('request', $request, 'request');

par

$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
$kernel->handle($request);
$sfContainer = $kernel->getContainer();
symfony_get_container($sfContainer);

dans ce cas je me retrouve bien avec l'url de base utilisé pour le blog, reste le soucis de savoir comment modifier une partie de cette URL à la demande. Typiquement dans mon cas, j'ai une URL qui termine par blog/ et je souhaite que toutes les adresses appelées par la route soient construite sur une base ne comprennant pas cette partie "blog/" dans l'url (ceci revientdrait à indiquer une URL de base dans le config.php pour l'URL public de référence pour Sf mais la méthode ::create de request ne semble pas prendre en compte ce que je demande :( ).

eko commented 10 years ago

Hi @Draeli,

Thank you for these informations.

I think you can try to define a custom path info using the Symfony RequestContext::setPathInfo() method: http://api.symfony.com/2.5/Symfony/Component/Routing/RequestContext.html

Something like this:

$context = new RequestContext();
$context->setPathInfo('/blog'); // You should obtain this value from Wordpress

$request->setContext($context);