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;
}
srv
はMaterialController
クラスの保護属性です。
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);
}
私も名前CustomServiceProvider
とCustomService
のプロバイダを持っており、ここでは、プロバイダの登録方法です:
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を使用して新しいプロジェクトを作成し、任意の複雑さを加えることなく、私はポストルートを追加し、フォームにそれを呼び出しますアクション、しかし何も変わっていない!
'updateMaterial'メソッドはどこですか? 'updateMaterialPage'関数を呼び出します。 – Ben
すみません。私は質問を編集する間違いがありました。 updateMaterialPageはありません。 –
[Laravel 5.5の重複している可能性があります]フォームを送信中に非アクティブなエラーが発生したためにページが期限切れになりました](https://stackoverflow.com/questions/46551940/laravel-5-5-the-page-has-expired-due-to- inactivity-error-while-sending-form) – Ben