Ich habe Schwierigkeiten, funktionierende PUT-Routen in meiner Lumen-API zu erstellen. Meine Anfragen erreichen die richtige Route, aber ich kann über $request->all()
keine Werte abrufen.PUT-Daten in Lumen erhalten
Ich habe herausgefunden, dass PHP den php://input
Stream lesen muss, um den PUT Körper zu bekommen. Dies geschieht in der getContent()
-Funktion von Symfony\Component\HttpFoundation\Request
. Diese Funktion wird jedoch mehrmals aufgerufen, und da der Eingangspuffer beim Lesen geleert wird, sind die Daten bei Bedarf nicht vorhanden.
Ich fand auch heraus, dass, wenn ich meine Content-Type-Header auf Text/plain setze kann ich $request->json()
erfolgreich drucken, aber wenn ich es auf application/json einstellen, ist das Objekt leer.
Irgendwelche Ideen?
PS: Ich bin mir bewusst, dass Sie für HTML-Anfragen den Parameter _method hinzufügen sollten, aber da ich meine Anfragen nicht über HTML mache, sollte der Parameter nicht benötigt werden.
Edit:
Meine Route:
$app->put('settings', '[email protected]');
Mein Controller:
class SettingController extends Controller
{
public function update(Request $request)
{
print_r($request->all());
}
}
Können Sie Ihren Code anzeigen? –
Welcher Teil? In meiner routes.php: '$ api -> put ('settings', 'SettingController @ update');'. In der Update-Methode mache ich einfach 'print_r ($ request-> all())', was leer ist. Ich benutze übrigens das Dingo-Paket. – Martijn
Zeigen Sie Ihre Route und Controller, wenn Sie einen verwenden. –