У меня возникли некоторые проблемы в WebTestCase с использованием Silex: в одном из действий моего контроллера мне нужен параметр, переданный через обычный $_GET (мне нужно, поскольку это URL-адрес, и Apache интерпретирует% 2F, если он находится вне запроса строка - см. Переменные URL с %2f не обрабатываются силекс например)
Вот как определяется мой маршрут:
$controller
->get('/get', <controller action>)
->value('url', (!empty($_GET['url']) ? $_GET['url'] : false));
Он отлично работает в браузере, но, похоже, не работает внутри WebTestCase, как этот: $_GET
остается пустым...
$client = $this->createClient();
$client->request('GET', '/get?url=' . urlencode($url));
изменить
Я только что провел быстрый эксперимент: если я сделаю следующее на своем маршруте:
$controller
->get('/get/{url}', <action>)
->assert('url', '.*');
А это в тесте:
$client = $this->createClient();
$client->request('GET', '/get/' . urlencode($url));
Если все в порядке, $url передается контроллеру... но в браузере он больше не работает, так как проходит через Apache.
$client->request(...)
, выполнив$_GET['url'] = 'some url';
(кстати, какая проблема у вас со вторым методом? Он тоже должен работать из браузера) - person mTorres   schedule 18.06.2015/get/http:%2%2....
; Apache интерпретирует это как/get/http://
и теряется (выдает 404). Есть способы решить проблему, но вам нужен доступ к конфигурации Apache, чего у меня нет. - person haltabush   schedule 18.06.2015