![](/img/trans.png)
[英]How do I get the user id and using it to post new comment in the store method in laravel?
[英]How do i get a post id in laravel
我是 Laravel 的新手,所以我試圖刪除和編輯一些鏈接到更新所在頁面的帖子,但每次更新或刪除時,我都會收到 404 錯誤或找不到頁面(我認為問題是網址)。
這是我的更新代碼
public function update(Request $request, $id) {
$car = Car::where('id', $id)
->update([
'name'=> $request->input('name'),
'founded'=> $request->input('founded'),
'description' => $request->input('description')
]);
return redirect('/cars'); }
這是用於刪除/銷毀的
public function destroy($id)
{
$car = Car::find($id);
$car->delete();
return redirect('/cars');
}
我還有一個edit.blade.php
@section('content')
<div class="m-auto w-4/8 py-24">
<div class="text-center">
<h1 class="text-5xl uppercase bold">
Update Car
</h1>
</div>
</div>
<div class="flex justify-center pt-20">
<form action="../cars/{{ $car->id }}" method="POST">
@csrf
@method('PUT')
<div class="block">
<input type="text" class="shadow-5xl mb-10 p-2 w-80 italic placeholder-gray-400" name="name"
value="{{ $car->name }}"><br>
<input type="number" class="shadow-5xl mb-10 p-2 w-80 italic placeholder-gray-400" name="founded"
value="{{ $car->founded }}"><br>
<input type="text" class="shadow-5xl mb-10 p-2 w-80 italic placeholder-gray-400" name="description"
value="{{ $car->description }}"><br>
<button type="submit" class="bg-teal-500 block shadow-5xl mb-10 p-2 w-80 uppercase font-bold text-white">
Update
</button>
</div>
</form>
</div>
@endsection
最后一部分包含刪除和編輯按鈕
@foreach ($cars as $car )
<div class="m-auto">
<span class="uppercase text-teal-500 font-bold text-xs italic">
Founded : {{ $car->founded }}
</span>
<h2 class="text-gray-700 text-5xl">
{{ $car->name }}
</h2>
<p class="text-lg text-gray-700 py-6">
Description : {{ $car->description }}
</p>
<div class="float-right">
<a class=" pb-2 italic text-teal-500" href="cars/{{ $car->id }}/edit">
Edit →
</a>
<form action="../cars/{{ $car->id }}" method="POST">
@csrf
@method("delete")
<button type="submit" class="pb-2 italic text-red-500">
Delete →
</button>
</form>
</div><br><br>
<hr class="mt-4 mb-8">
</div>
@endforeach
這是我的路線
Route::resource('/cars', CarsController::class);
首先使用此命令檢查路線php artisan route:list
然后你會看到這樣的列表
DELETE cars/{car}
PUT|PATCH cars/{car}
car
名稱對於自動 Laravel 根據類型提示Car $car
查找實體很重要,因此在 controller 中使用以下約定:
public function destroy(Car $car)
{
$car->delete();
return redirect('/cars');
}
public function update(Request $request, Car $car) { ... }
您不應該像這樣生成 url: action="../cars/{{ $car->id }}"
而是使用action="{{ route('cars.update', $car->id) }}"
您可以通過運行此命令php artisan route:list
查看可用路由
因此,基本上,當您使用資源時,您會通過 Laravel 使用不同的方法獲得預定義的路線列表。
例如你的路線是
Route::resource('/cars', CarsController::class);
然后 laravel 生成這樣的路由。 要檢查路線列表,請運行
php artisan route:list
Route::GET('/cars', [CarsController::class, 'index'])->name('cars.index);
Route::GET('/cars/create', [CarsController::class, 'create'])->name('cars.create');
Route::POST('/cars', [CarsController::class, 'store'])->name('cars.store');
Route::GET('/cars/{id}', [CarsController::class, 'show'])->name('cars.show');
Route::GET('/cars/{id}/edit', [CarsController::class, 'edit'])->name('cars.edit');
Route::PUT('/cars/{id}', [CarsController::class, 'update'])->name('cars.update');
Route::DELETE('/cars/{id}', [CarsController::class, 'destroy'])->name('cars.destroy');
然后您可以在表單中使用已定義的方法。
Example to use
{{ route('cars.destroy', ['id' => $car->id]) }}
來源 Laravel 文檔: 單擊以查看官方 Laravel 網站上的更多資源方法。
您需要在 routes.php 中指定路由
Route::post('/cars/{id}', ......);
然后在 controller 和 function 中,您使用該路由調用 {id} 將是一個參數
public function myControllerRoute($id, Request $request) {
}
您也可以將 ID 作為隱藏輸入字段傳遞,並使用 $request 在 /cars 路由上檢索它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.