2017-12-17 9 views
0

this oneのような他の質問によれば、サービスメソッドを使用すると、ページが非アクティブで期限切れになる - Laravel 5.5

長期的には、フォームアクションで実行されるコントローラ内でサービスメソッドを呼び出すと、メッセージが表示されることがわかりました。

はここにあるいくつかの説明と私のコードサンプル:

マイルート:

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

材質コントローラーコンストラクタ:

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

    $this->srv= $srv; 
} 

srvMaterialControllerクラスの保護属性です。

updateMaterial方法:

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); 

} 

私も名前CustomServiceProviderCustomServiceのプロバイダを持っており、ここでは、プロバイダの登録方法です:

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

と私はプロバイダとして、それを登録しconfig/app.phpにあります。

サービスupdateMaterialメソッドを呼び出す前に何かを返すと問題ありません。メソッドが実行されると、問題が表示されます。

私には分かりません!

更新: そして、ここではCustomServiceのupdateMaterialです:

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; 
} 

私はまた、Laravel 5.5.0を使用して新しいプロジェクトを作成し、任意の複雑さを加えることなく、私はポストルートを追加し、フォームにそれを呼び出しますアクション、しかし何も変わっていない!

+0

'updateMaterial'メソッドはどこですか? 'updateMaterialPage'関数を呼び出します。 – Ben

+0

すみません。私は質問を編集する間違いがありました。 updateMaterialPageはありません。 –

+1

[Laravel 5.5の重複している可能性があります]フォームを送信中に非アクティブなエラーが発生したためにページが期限切れになりました](https://stackoverflow.com/questions/46551940/laravel-5-5-the-page-has-expired-due-to- inactivity-error-while-sending-form) – Ben

答えて

1

これは、ローカル環境のWindowsユーザーの問題です。私はWindowsの場合でもこれで多くの被害を受けました。プロダクションサーバーにデプロイすると、問題は一切発生しません。

これはLaravel 5.5バージョンでのみ問題にはならないことに注意してください。私はまずこの問題をバージョン5.2で見た。

私は、これはFideloperのHomesteadやVesselのようなものを使っていると思います。正直なところ私はWindowsを使用しているときにこの問題を抱えていました。

+0

あなたの答えをありがとう、ありがとう、今日はありがとう。 –

+0

[このQ](https://stackoverflow.com/q/47884538/3534952)でも回答を繰り返してください。 –

関連する問題