2017-12-17 1 views
0

Nach anderen gestellten Fragen wie this one habe ich viele Dinge getan, um diese Anfrage abgelaufen Nachricht zu verhindern, aber es gibt keine Lösung für mein Problem."Die Seite ist wegen Inaktivität abgelaufen" wird angezeigt, wenn Sie eine Services-Methode verwenden - Laravel 5.5

Auf lange Sicht erkannte ich, dass die Nachricht erscheint, wenn ich eine Service-Methode in einem Controller aufrufen, die auf Formularaktion ausgeführt werden!

Hier ist meine Codes Proben mit einigen Beschreibungen:

Meine Route:

Route::post('Material/{id}', '[email protected]')->name('updateMaterial'); 

Werkstoff-Controller Constructor:

public function __construct(CustomService $srv) 
{ 
    $this->middleware('admin')->only(['updateMaterial']); 

    $this->srv= $srv; 
} 

srv ist ein geschützt Attribut in MaterialController Klasse.

updateMaterial Methode:

public function updateMaterial($id,Request $request) 
{ 
    $this->validate($request, [...]); 

    $material = $this->srv->updateMaterial($request, $id); 

    if ($material) 
     return view('panel._materials.edit-material') 
      ->with('material', $material) 
      ->with('success', 1); 

} 

Ich habe auch einen Anbieter für CustomService mit Namen CustomServiceProvider und hier ist das Register Methode des Anbieters:

public function register() 
{ 
    $this->app->bind(CustomService::class,function($app){ 
     return new CustomService(); 
    }); 
} 

und ich registrierte es als Anbieter in config/app.php.

Also, wenn ich etwas vor dem Anruf Service updateMaterial Methode zurückgeben, ist es in Ordnung. aber wenn die Methode ausgeführt wird, wird das Problem angezeigt!

Ich habe keine Ahnung davon!

Update: Und hier ist updateMaterial von CustomService:

public function updateMaterial($request, $id) 
{ 
    $material = Material::find($id); 
    if (!$material) 
     return false; 

    if ($request->has('unit')) 
     $material->unit = $request['unit']; 
    if ($request->has('price')) 
     $material->price = $request['price']; 
    if ($request->has('type')) 
     $material->type = $request['type']; 
    if ($request->has('is_active')) 
     $material->is_active = $request['is_active']; 

    $material->updated_at = Carbon::now(); 

    $material->save(); 
    return $material; 
} 

ich auch ein neues Projekt mit Laravel 5.5.0 erstellen und ohne jede zusätzliche Komplexität ich einen Beitrag Route gerade hinzugefügt und es in Form nennen Aktion, aber nichts hat sich geändert!

+0

wo ist 'updateMaterial' Methode? Wo rufst du die Funktion 'updateMaterialPage' an? – Ben

+0

Es tut mir leid. Es gab einen Fehler, dass ich die Frage bearbeite. Es gibt keine updateMaterialPage. –

+1

Mögliches Duplikat von [Laravel 5.5 Die Seite ist wegen Inaktivitätsfehlers beim Senden des Formulars abgelaufen] (https://stackoverflow.com/questions/46551940/laravel-5-5-the-page-has-expired-due-to-to- Inaktivitäts-Fehler-während-Senden-Formular) – Ben

Antwort

1

Dies ist nur ein Problem für Windows-Benutzer in der lokalen Umgebung. Darunter habe ich auch unter Windows viel gelitten. Sobald Sie die Bereitstellung auf Ihrem Produktionsserver vorgenommen haben, treten keinerlei Probleme auf.

Es ist wichtig zu beachten, dass dies nur bei der Version Laravel 5.5 kein Problem ist. Ich habe dieses Problem zum ersten Mal in Version 5.2 gesehen.

Ich denke, eine gute Lösung dafür wäre vielleicht etwas wie Homestead oder Vessel von Fideloper. Ehrlich gesagt habe ich nur dieses Problem bei der Verwendung von Windows.

+0

Danke für deine Antwort und vielen Dank für heute. –

+0

Bitte wiederholen Sie Ihre Antwort in [this Q] (https://stackoverflow.com/q/47884538/3534952) auch. –

Verwandte Themen