Скажи, у меня есть URL http://server/mysite/web/app_dev.php/resource/1
,
Я делаю GET
запрос и соответствующее действие ResourceController::getAction
,
В этом действии контроллера, если я позвоню $request->getPathInfo()
, это дает мне /resource/1
,
Но в том же контроллере, если я создаю объект запроса с URL другого ресурса и вызова getPathInfo()
он возвращает более длинную версию.
$request = Request::create('http://server/mysite/web/app_dev.php/another_resource/1');
echo $request->getPathInfo();
OUTPUT >>
/mysite/web/app_dev.php/another_resource/1
Как это возможно сделать getPathInfo()
только вернуться /another_resource/1
в этом случае?
Любой может предложить наиболее безопасный способ преобразования URL-адреса конечной точки. http://server/mysite/web/app_dev.php/another_resource/1
в /another_resource/1
в Symfony2?
Действие контроллера получает некоторые URL-адреса в содержимом запроса. Действие должно проанализировать эти URL, чтобы распознать соответствующий ресурс. Я пытаюсь использовать для $router->match
функция для извлечения параметров из URL. Функция соответствия ожидает только /another_resource/1
часть.
Метод request :: create создает новый запрос, который не знает никакой информации о текущем запросе, он возвращает полный URI, потому что он не знает текущий файл скрипта.
пытаться:
$request = Request::create('http://server/mysite/web/app_dev.php/another_resource/1', null, array(), array(), array(), array(
'SCRIPT_NAME' => $this->get('kernel')->getEnvironment() == 'dev' ? 'app_dev.php' : 'app.php',
'SCRIPT_FILENAME' => $this->get('kernel')->getEnvironment() == 'dev' ? 'app_dev.php' : 'app.php',
));
echo $request->getPathInfo();
Других решений пока нет …