如何解决路由资源更新和删除不能使用除商店 laravel 8 以外的多个角色
我想使用路由资源删除我的管理产品。但是当我提交它时,它转到第 404 页,发现与更新方法不同。但我的网址 id 显示出来了。这是销毁方法 @client.command()
async def server(ctx):
name = str(ctx.guild.name)
description = str(ctx.guild.description)
owner = str(ctx.guild.owner)
id = str(ctx.guild.id)
region = str(ctx.guild.region)
memberCount = str(ctx.guild.member_count)
icon = str(ctx.guild.icon_url)
embed = discord.Embed(
title=name + " Server Information",description=description,color=discord.Color.blue()
)[enter image description here][1]
embed.set_thumbnail(url=icon)
embed.add_field(name="Owner",value=owner,inline=True)
embed.add_field(name="Server ID",value=id,inline=True)
embed.add_field(name="Region",value=region,inline=True)
embed.add_field(name="Member Count",value=memberCount,inline=True)
await ctx.send(embed=embed)
上的网址,但商店工作正常它指向我的网址并存储在数据库中。
这是我在 Admin/ProductController 资源上的 store 方法
http://127.0.0.1:8000/admin/1
这是我的销毁方法 Admin/ProductController 资源
store(Request $request)
{
$request['user_id'] = auth()->user()->id;
Product::create($request->all());
return redirect()->back();
}
这是我的表单操作存储方法,此表单工作正常
public function destroy($id)
{
Product::where('id',$id->id)->delete();
]);
return redirect()->back();
}
这是我的表单操作删除问题是当我提交它时找不到 404 页面
<form method="post" action="{{route('admin.store')}}">
<input type="text" name="category" class="form-control">
<button type="submit" class="btn btn-primary">Save changes</button>
</form>
这是我的网络路由用户和管理员
<form method="post" action="{{route('admin.destroy',$product->id)}}">
<input type="text" name="category" class="form-control">
<button type="submit" class="btn btn-primary">Save changes</button>
</form>
这是我的路线清单
Route::get('/',function () {
return view('welcome');
});
Auth::routes();
Route::group(['as'=>'user.','prefix'=>'users','namespace'=>'App\Http\Controllers\Users'],function (){
Route::get('/',[App\Http\Controllers\Users\UsersController::class,'index']);
Route::resources(['/' => ProductController::class,],['except'=>['index']]);
});
Route::group(['middleware'=>'admin','as'=>'admin.','prefix'=>'admin','namespace'=>'App\Http\Controllers\Admin'],[App\Http\Controllers\Admin\AdminController::class,'index']);
Route::resources(['/' => ProductController::class],['except'=>['index']]);
});
这是我的App\Http\Auth\LoginController
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+------------+
| | GET|HEAD | / | | Closure | web |
| | POST | admin | admin.store | App\Http\Controllers\Admin\ProductController@store | web |
| | | | | | admin |
| | GET|HEAD | admin | admin.index | App\Http\Controllers\Admin\ProductController@index | web |
| | | | | | admin |
| | GET|HEAD | admin/create | admin.create | App\Http\Controllers\Admin\ProductController@create | web |
| | | | | | admin |
| | DELETE | admin/{} | admin.destroy | App\Http\Controllers\Admin\ProductController@destroy | web |
| | | | | | admin |
| | PUT|PATCH | admin/{} | admin.update | App\Http\Controllers\Admin\ProductController@update | web |
| | | | | | admin |
| | GET|HEAD | admin/{} | admin.show | App\Http\Controllers\Admin\ProductController@show | web |
| | | | | | admin |
| | GET|HEAD | admin/{}/edit | admin.edit | App\Http\Controllers\Admin\ProductController@edit | web |
| | | | | | admin |
| | GET|HEAD | api/user | | Closure | api |
| | | | | | auth:api |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web |
| | | | | | guest |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web |
| | | | | | guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | GET|HEAD | password/confirm | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm | web |
| | | | | | auth |
| | POST | password/confirm | | App\Http\Controllers\Auth\ConfirmPasswordController@confirm | web |
| | | | | | auth |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController@reset | web |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web |
| | | | | | guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web |
| | | | | | guest |
| | GET|HEAD | users | user. | App\Http\Controllers\Users\UsersController@index | web |
| | POST | users | user.store | App\Http\Controllers\Users\ProductController@store | web |
| | | | | | auth |
| | GET|HEAD | users/create | user.create | App\Http\Controllers\Users\ProductController@create | web |
| | | | | | auth |
| | DELETE | users/{} | user.destroy | App\Http\Controllers\Users\ProductController@destroy | web |
| | | | | | auth |
| | GET|HEAD | users/{} | user.show | App\Http\Controllers\Users\ProductController@show | web |
| | | | | | auth |
| | PUT|PATCH | users/{} | user.update | App\Http\Controllers\Users\ProductController@update | web |
| | | | | | auth |
| | GET|HEAD | users/{}/edit | user.edit | App\Http\Controllers\Users\ProductController@edit | web |
| | | | | | auth |
+--------+-----------+------------------------+------------------+---------------------------------------
这是我的中间件管理员
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function login(Request $request)
{
$inputVal = $request->all();
$this->validate($request,[
'email' => 'required|email','password' => 'required',]);
if(auth()->attempt(array('email' => $inputVal['email'],'password' => $inputVal['password']))){
if (auth()->user()->role == 'admin') {
return redirect()->route('admin.');
}else{
return redirect()->route('user');
}
}else{
return redirect()->route('login')
->with('error','Email & Password are incorrect.');
}
}
}
我不知道这个商店有什么问题,但更新和销毁不起作用。我猜错误是在路由网络或中间件上。
解决方法
我认为您的问题是您没有告诉您的删除表单使用 DELETE
操作。由于 HTML,您不能使用 action="delete"
,因此您必须“伪造”它,而 Blade 允许您这样做。
试试这个:
<form method="post" action="{{route('admin.destroy',$product->id)}}">
@method('DELETE')
<input type="text" name="category" class="form-control">
<button type="submit" class="btn btn-primary">Save changes</button>
</form>
有关它的更多信息,请访问 Blade documentation。
同样的修复应该适用于您的更新,您应该在更新表单标签后使用 @method('PUT')
。
如果您的方法是 post,那么您还必须添加 csrf
<form method="post" action="{{route('admin.destroy',$product->id)}}">
{{ method_field('delete') }}
{{ csrf_field() }}
<input type="text" name="category" class="form-control">
<button type="submit" class="btn btn-primary">Save changes</button>
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。