Laravel 更新功能不 运行 正确响应
Laravel Update Function Not Running Correct Response
当我尝试更新我的 Laravel 应用程序中的记录时,运行 错误 URL 导致错误 404。当我在本地开发时,此功能运行良好但是现在它托管在 one.com 服务器上,它已停止工作。
edit.blade.php
<form method="POST" action="gins/{{ $gins->id }}">
@method('PATCH')
@csrf
<div class="field">
<label class="label" for="gin">Gin</label>
<div class="control">
<input type="text" class="input" name="gin"
placeholder="Gin" value="{{ $gins->gin }}">
</div>
</div>
<div class="field">
<label class="label" for="size">Bottle Size(ml)</label>
<div class="control">
<input type="text" class="input" name="size"
placeholder="Size (ml)" value="{{ $gins->size }}">
</div>
</div>
<div class="field">
<label class="label" for="price">Price(£)</label>
<div class="control">
<input type="text" class="input" name="price"
placeholder="Price of Gin" value="{{ $gins->price }}">
</div>
</div>
<div class="field">
<div class="control">
<button type="submit" class="button is-success">Update Record
</button>
</div>
</div>
</form>
路线
Route::patch('gins/{gin}', 'PostsController@update')->middleware('auth');
Auth::routes();
控制器
public function update(Request $request, $id)
{
$gins = \App\Gins::findOrFail($id);
$gins->gin = request('gin');
$gins->size = request('size');
$gins->price = request('price');
$gins->save();
return redirect('gins');
}
编辑页面的 URL 是 Laravel/gins/7/edit
。当我单击提交按钮时,它返回 URL Laravel/gins/7/gins/7
而它应该重定向回 Laravel/gins/7
.
Url 中的 7
是我要更新的特定记录中的记录 id
。
像那样对 URL 进行硬编码总是一个坏主意。以下
<form method="POST" action="gins/{{ $gins->id }}">
在像 laravel/gins/
这样的路线中,计算结果为 laravel/gins/gins/7
。
此外,路由在动态 Web 应用程序中一直在变化。因此,我建议您使用 Named Routes。
例如:
Route::patch('gins/{gin}', 'PostsController@update')
->middleware('auth')
->name('posts.update');
然后将表单操作更改为:
<form method="POST" action="{{ route('posts.update', ['gin' => $gins->id]) }}">
我也会稍微清理一下你的 update()
方法。
public function update(Request $request, $id)
{
$gins = \App\Gins::findOrFail($id);
$gins->gin = request('gin');
$gins->size = request('size');
$gins->price = request('price');
$gins->save();
// change this to a named route as well
return redirect('gins');
// or if you just want to return back to the previous page, you can do
// return back();
}
当我尝试更新我的 Laravel 应用程序中的记录时,运行 错误 URL 导致错误 404。当我在本地开发时,此功能运行良好但是现在它托管在 one.com 服务器上,它已停止工作。
edit.blade.php
<form method="POST" action="gins/{{ $gins->id }}">
@method('PATCH')
@csrf
<div class="field">
<label class="label" for="gin">Gin</label>
<div class="control">
<input type="text" class="input" name="gin"
placeholder="Gin" value="{{ $gins->gin }}">
</div>
</div>
<div class="field">
<label class="label" for="size">Bottle Size(ml)</label>
<div class="control">
<input type="text" class="input" name="size"
placeholder="Size (ml)" value="{{ $gins->size }}">
</div>
</div>
<div class="field">
<label class="label" for="price">Price(£)</label>
<div class="control">
<input type="text" class="input" name="price"
placeholder="Price of Gin" value="{{ $gins->price }}">
</div>
</div>
<div class="field">
<div class="control">
<button type="submit" class="button is-success">Update Record
</button>
</div>
</div>
</form>
路线
Route::patch('gins/{gin}', 'PostsController@update')->middleware('auth');
Auth::routes();
控制器
public function update(Request $request, $id)
{
$gins = \App\Gins::findOrFail($id);
$gins->gin = request('gin');
$gins->size = request('size');
$gins->price = request('price');
$gins->save();
return redirect('gins');
}
编辑页面的 URL 是 Laravel/gins/7/edit
。当我单击提交按钮时,它返回 URL Laravel/gins/7/gins/7
而它应该重定向回 Laravel/gins/7
.
Url 中的 7
是我要更新的特定记录中的记录 id
。
像那样对 URL 进行硬编码总是一个坏主意。以下
<form method="POST" action="gins/{{ $gins->id }}">
在像 laravel/gins/
这样的路线中,计算结果为 laravel/gins/gins/7
。
此外,路由在动态 Web 应用程序中一直在变化。因此,我建议您使用 Named Routes。 例如:
Route::patch('gins/{gin}', 'PostsController@update')
->middleware('auth')
->name('posts.update');
然后将表单操作更改为:
<form method="POST" action="{{ route('posts.update', ['gin' => $gins->id]) }}">
我也会稍微清理一下你的 update()
方法。
public function update(Request $request, $id)
{
$gins = \App\Gins::findOrFail($id);
$gins->gin = request('gin');
$gins->size = request('size');
$gins->price = request('price');
$gins->save();
// change this to a named route as well
return redirect('gins');
// or if you just want to return back to the previous page, you can do
// return back();
}