Я получаю эту ошибку, и я не смог ее исправить. Все решения здесь используют старые версии Slim и в основном относятся к регистрации автозагрузчика, который обрабатывается в этом случае.
Что именно вызывает эту ошибку? В нем говорится, что это происходит в строке в функции addJob()
с помощью этого кода $request = Slim::getInstance()->request();
т.е. отсутствует класс Slim.
require 'vendor/autoload.php'; $app = new \Slim\App; $app->post('/add_job', 'addJob'); $app->run(); function addJob() { $request = Slim::getInstance()->request(); // <------ ERROR $job = json_decode($request->getBody()); $sql = "INSERT INTO jobs (title, company, description, location) VALUES (:title, :company, :description, :location)"; try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("title", $job->title); $stmt->bindParam("company", $job->company); $stmt->bindParam("description", $job->description); $stmt->bindParam("location", $job->location); $stmt->execute(); $job->id = $db->lastInsertId(); $db = null; echo json_encode($job); } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } }
Что именно вызывает эту ошибку?
вместо того, чтобы получать запрос от статически общего экземпляра, используйте тот, который передается как первый аргумент функции addJob
function addJob(MessageInterface $request) { $job = json_decode($request->getBody());