Я пытаюсь выполнить JSON-схемы валидатор от justinrainbow, как связующего в Слим 3.Слим 3 промежуточного проверки
Я не могу понять, как получить входные данные клиентов из запросов GET/POST в промежуточное программное обеспечение. пытался так:
$mw = function ($request, $response, $next) { $data = $request->getParsedBody(); print_r($data); // prints nothing $id = $request->getAttribute('loan_id'); print_r($id); // prints nothing // here I need to validate the user input from GET/POST requests with json-schema library and send the result to controller $response = $next($request, $response); return $response; }; $app->get('/loan/{loan_id}', function (Request $request, Response $response) use ($app, $model) { $loanId = $request->getAttribute('loan_id'); // here it works $data = $model->getLoan($loanId); $newResponse = $response->withJson($data, 201); return $newResponse; })->add($mw);
Есть 2 возможных способа, как мне это нужно. что я делаю неправильно?
проверить его в промежуточном программном обеспечении и отправить некоторый массив/JSON ответ на контроллер, который я затем получить как я понял с
$data = $request->getParsedBody();
проверить его в промежуточном программном обеспечении, но окончательная проверка буду в контроллере, как это :
$app->get('/loan/{loan_id}', function (Request $request, Response $response) use ($app, $model) { if($validator->isValid()){ // } $loanId = $request->getAttribute('loan_id'); // here it works $data = $model->getLoan($loanId); $newResponse = $response->withJson($data, 201); return $newResponse; })->add($mw);
Лучший вариант для меня это что-то сделать например here , но я не понимаю, что мне следует возвращать в контейнере, и как передавать входной/выходной вход в контейнер
Вы не можете просто 'print_r()' в промежуточном программном обеспечении. Попробуйте что-то вроде этого вместо '$ response-> write (print_r ($ data), true))' –