Laravel Route [admin.delete-post] 未定义 - 我定义了这条路线
Posted
技术标签:
【中文标题】Laravel Route [admin.delete-post] 未定义 - 我定义了这条路线【英文标题】:Laravel Route [admin.delete-post] not defined - i defined this route 【发布时间】:2021-12-15 15:51:23 【问题描述】:我在 Laravel 中使用我定义的路径。 但它给了我一个未定义的信息 我检查了所有的路线。 我什至清除了缓存。 这对我来说很不寻常,因为我的其他路径以相同的方式工作
这是我的身体
@extends('layouts.master')
@section('content')
@if(Session::has('info'))
<div class="bg-dark text-white">
<p>box:Session::get('info')</p>
</div>
@endif
<div>
<a class="btn btn-dark" href="route('admin.new-post')">New Post</a>
<br /><br />
@foreach($posts as $post)
<div class="text-center">
<div>
<h1>$post->title</h1>
<p>
$post->content
</p>
</div>
<a class="btn btn-dark" href="route('admin.edit-post',['id' => $post->id])">Edit Post</a>
<a class="btn btn-dark" href="route('admin.delete-post',['id' => $post->id])">Delete Post</a>
</div>
</div>
@endforeach
@endsection
这是我的路线
Route::group(['prefix'=>'admin'],function()
Route::get('',[
'uses' => 'App\Http\Controllers\PostController@getAdminIndex',
'as' => 'admin'
]);
Route::get('new-post',[
'uses' => 'App\Http\Controllers\PostController@getAdminCreate',
'as' => 'admin.new-post'
]);
Route::post('create', [
'uses' => 'App\Http\Controllers\PostController@postAdminCreate',
'as' => 'admin.create-post'
]);
Route::get('edit-post/id',[
'uses' => 'App\Http\Controllers\PostController@getAdminEdit',
'as' => 'admin.edit-post'
]);
Route::post('edit',[
'uses' => 'App\Http\Controllers\PostController@postAdminUpdate',
'as' => 'admin.update'
]);
Route::get('delete-post/id', 'App\Http\Controllers\PostController@postDelete')
->name('admin.delete-post');
);
这是我的控制,但我得到了找不到路径的错误。 所有代码中的一切都很简单。 代码中没有歧义。 谢谢你为我付出的努力
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
use Illuminate\Session\Store;
use Illuminate\Database\Eloquent\Model;
class PostController extends Controller
public function getIndex(Store $session)
$posts = Post::all();
return view("blog.home",['posts' => $posts]);
public function getAdminIndex(Store $session)
$posts = Post::all();
return view("admin.index",['posts' => $posts]);
public function getPost(Store $session, $id)
$post = Post::find($id);
return view("blog.post",['post' => $post]);
public function getAdminCreate(Store $session)
return view('admin.new-post');
public function getAdminEdit(Store $session, $id)
$post = Post::find($id);
return view("admin.edit-post",['post' => $post , 'postId' => $id]);
public function postAdminCreate(Store $session, Request $request)
$this->validate($request,[
'title' => 'Required | min:5',
'content' => 'Required | min:10'
]);
$post = new Post([
'title' => $request->input('title'),
'content' => $request->input('content')
]);
$post->save();
return redirect()->route('admin')->with('info','post created, title is :'.
$request->input('title'));
public function postAdminUpdate(Store $session, Request $request)
$this->validate($request,[
'title' => 'Required | min:5',
'content' => 'Required | min:10'
]);
$post = Post::find($request->input('id'));
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
return redirect()
->route('admin')
->with('info','post edited, title is :'. $request
->input('title'));
public function postDelete($id)
$post = Post::find($id);
$post->delete();
return redirect()->route('admin.index')->with('info', 'Delete your post');
```
this my Exception
> Symfony\Component\Routing\Exception\RouteNotFoundException
Route [admin.delete-post] not defined. (View: C:\xampp\htdocs\my-laravel\resources\views\admin\index.blade.php)`
thank you of all
【问题讨论】:
这是什么版本的 laravel? 您是否尝试过使用as
关键字?就像你的其他路线一样?
laravel-8 。我为所有路线使用路线名称
请添加有关您收到的错误消息的详细信息,an undefined message
不是很有帮助。另外,添加您的控制器,以便我们可以排除缺少的操作方法。
嗨。我还在上面的代码中添加了一个控制器。代码非常简单流畅
【参考方案1】:
我注意到了什么:
Route::post('edit',[
'uses' => 'App\Http\Controllers\PostController@postAdminUpdate',
'as' => 'admin.update'
]);
Route::get('delete-post/id', 'App\Http\Controllers\PostController@postDelete')
->name('admin.delete-post');
在 laravel 文档中,仅列出了 5.3 之前的命名路由的关键字。我不确定它在 laravel 8 中是否仍然有效!?也许您将所有路线命名为 name 而不是 as。
使用“name”代替“as”作为路由名称。这本身就是正确的。但是用“as”试试吧。
对于这种情况可能很重要:php artisan route:clear
还有:你确定你用get方法来删除吗?
【讨论】:
我用了“as”,又遇到同样的错误 @sinamohsenian 如果你只使用名字?重要的是:php artisan route:clear
谢谢。我真的很失望。谢谢你 。成功了
@sinamohsenian 酷!现在是什么。路由缓存或名称路由定义的名称?
路由缓存。谢谢以上是关于Laravel Route [admin.delete-post] 未定义 - 我定义了这条路线的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 4 - Route::resource 与 Route::controller。使用哪个?