Не работает redirect в slim framework 3.0

sharomet

Новичок
Всем привет.
Столкнулся с вот такой проблемой.
index.php
$app = new \Slim\App();
$app->get('/', function ($request, $response, $args) {
$router = $this->router;
return $response->withRedirect($router->pathFor('name'));//не работает
});

$app->get('/auth/signup', function ($request, $response, $args) {
return 'Hello';
})->setName('name');

$app -> run();

При входе на на страницу он должен редиректить на /auth/signup, но этого не происходит, та вообще ничего не происходит.
В чем может быть проблема?
Спасибо.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Slim - это куча дерьма. Он очень усложняет разработку. Принцип работы через цепочку из пяти call_user_func_array делает дебаг подвигом.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
если есть возможность сменить - лучше сменить, конечно
посоветовать могу в зависимости от опыта разработчиков

сейчас я перевожу микросервис со slim на сборку symfony microkernel+yaml+monolog+foundation+di+phpunit+composer - никаких dev-зависимостей, доктрин и прочего
если нравится laravel - бери lumen
нравится yii - бери yii, и не используй виджеты, там есть тулза для генерации RESTful-сервисов
 

AmdY

Пью пиво
Команда форума
@sharomet не может ничего не происходить. загляни в логи с ошибками.
 
  • Like
Реакции: WMix

sharomet

Новичок
@AmdY,
На сайте ошибок нет, логи не создаются.

Апач тоже ничего особенного не пишет.
Я использую OpenServer может ли быть с ним проблемы?
Apache
redisDB: 127.0.0.1 [03/Feb/2017:14:18:34 +0200] "GET / HTTP/1.1" 200 3 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
redisDB: 127.0.0.1 [03/Feb/2017:14:18:34 +0200] "GET /favicon.ico HTTP/1.1" 200 875 "http://redisdb/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

Apache отладка
[Fri Feb 03 14:18:13.327515 2017] [ssl:warn] [pid 17012:tid 388] AH01909: redisDB:443:0 server certificate does NOT include an ID which matches the server name


Иногда попадается
default: 127.0.0.1 [03/Feb/2017:15:57:44 +0200] "-" 408 - "-" "-"
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Как это не делает, вот отсылает заголовки и должен редиректить https://github.com/slimphp/Slim/blob/3.x/Slim/Http/Response.php#L456
Если у тебя до этого не начался аутпут и заголовки не перебились каким-нибудь BOM
Посмотри какие заголовки приходят браузеру
 

sharomet

Новичок
  • Request URL:http://redisdb/
  • Request Method:GET
  • Status Code:200 OK
  • Remote Address:127.0.0.1:80
  • Response Headersview sourceConnection:Keep-Alive
  • Content-Length:3
  • Content-Type:text/html; charset=UTF-8
  • Date:Fri, 03 Feb 2017 14:56:28 GMT
  • Keep-Alive:timeout=10, max=100
  • Server:Apache
  • Request Headersview source
  • Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  • Accept-Encoding:gzip, deflate, sdch
  • Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
  • Cache-Control:no-cache
  • Connection:keep-alive
  • Host:redisdb
  • Pragma:no-cache
  • Upgrade-Insecure-Requests:1
  • User-Agent:
  • Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Значит вы не там смотрите, поставьте брейкпойнт на return $response->withRedirect($router->pathFor('name')), судя по всему он туда не зоходит
 

AmdY

Пью пиво
Команда форума
ну так датопайте по шагам до конца, посмотрите что переписывает текущий response.
 

sharomet

Новичок
В том то и проблема, что ничегоиего не переписывает. Он просто не отрабатывает. Может ли быть проблема в сервере?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
для тех, кто не в теме, рассказываю

Slim не просто делает роутинг и предоставляет утилиты для удобства.
В роутинге он включает ob_start()
Вся модули приложения вызываются через call_user_funct_array по цепочке ответственности из callMiddlewareStack().
И в роутинге же он весь вывод забирает, так он полностью контролирует вывод приложения.

Я смотрю, они таки добавили опцию, а так, никакого echo и var_dump не работало.
Во 2й версии прямо в классе App был захардкоден вызов set_error_handler, сторонние обработчики игнорировались.
Без debug-режима никаких ошибок никуда не выводилось.
 
Последнее редактирование:

sharomet

Новичок
Я разобрался в чем дело.
Проблема была в кодировке - она должна быть utf-8 без BOM а у меня стояла просто utf-8.
Спасибо всем)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну да, роутинг занимается выводом, логично - не во view же вывод обрабатывать!
может, еще и приложению управление выводом доверить? надо же - придумали такое, на микрофреймворке микросервисы писать. 150 мегабайт вывода? выгрузка дампа? миграции между датацентрами? 640 кб буфера хватит для всех!

особенно правильно slim себя ведет со сторонними пакетами, когда ставит заголовок Content-size по размеру только своей части вывода.
он должен быть единственным фреймворком, который используется в проекте
 
Последнее редактирование:
Сверху