GET /admin/posts显示文章列表。laravel在blade模板里面路由怎么写?

在 Laravel 的 Blade 模板中,可以使用 route() 辅助函数来生成路由 URL。假设你的路由命名规则是基于资源控制器的(Resource Controller),那么可以通过以下方式在 Blade 模板中生成 /admin/posts 的链接。


1. 确保路由已命名

Modules/Admin/Routes/web.php 中,确保你定义了资源路由:

Route::prefix('admin')->middleware(['web', 'auth'])->group(function () {
    Route::resource('posts', PostController::class);
});

Laravel 的 Route::resource 会自动为每个路由分配名称。例如:

  • GET /admin/posts 的路由名称是 admin.posts.index
  • GET /admin/posts/create 的路由名称是 admin.posts.create
  • 其他路由类似。

2. 在 Blade 模板中生成链接

在 Blade 模板中,可以使用 route() 函数生成链接。例如:

(1) 显示文章列表的链接

如果你想生成一个指向文章列表页面的链接,可以这样写:

<a href="{{ route('admin.posts.index') }}" class="btn btn-primary">查看文章列表</a>
(2) 创建文章的链接

如果你想生成一个指向创建文章页面的链接,可以这样写:

<a href="{{ route('admin.posts.create') }}" class="btn btn-success">新建文章</a>
(3) 编辑文章的链接

如果你需要生成编辑某篇文章的链接(假设 $post 是文章对象),可以这样写:

<a href="{{ route('admin.posts.edit', $post->id) }}" class="btn btn-info">编辑</a>
(4) 删除文章的链接

如果需要生成删除文章的链接(通常通过表单实现),可以这样写:

<form action="{{ route('admin.posts.destroy', $post->id) }}" method="POST" style="display:inline;">
    @csrf
    @method('DELETE')
    <button type="submit" class="btn btn-danger" onclick="return confirm('确定要删除这篇文章吗?')">删除</button>
</form>

3. 完整示例:文章列表页面

以下是一个完整的 Blade 模板示例,展示如何显示文章列表并包含操作按钮(查看、编辑、删除):

@extends('admin::layouts.app')

@section('content')
<div class="card">
    <div class="card-header">
        <h3 class="card-title">文章列表</h3>
        <a href="{{ route('admin.posts.create') }}" class="btn btn-primary float-right">新建文章</a>
    </div>
    <div class="card-body">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>标题</th>
                    <th>状态</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                @foreach ($posts as $post)
                <tr>
                    <td>{{ $post->id }}</td>
                    <td>{{ $post->title }}</td>
                    <td>{!! $post->status_label !!}</td>
                    <td>
                        <a href="{{ route('admin.posts.edit', $post->id) }}" class="btn btn-sm btn-info">编辑</a>
                        <form action="{{ route('admin.posts.destroy', $post->id) }}" method="POST" style="display:inline;">
                            @csrf
                            @method('DELETE')
                            <button type="submit" class="btn btn-sm btn-danger" onclick="return confirm('确定要删除这篇文章吗?')">删除</button>
                        </form>
                    </td>
                </tr>
                @endforeach
            </tbody>
        </table>
    </div>
    <div class="card-footer">
        {{ $posts->links() }}
    </div>
</div>
@endsection

4. 路由名称解析

以下是 Route::resource 自动生成的路由名称和路径对应关系:

HTTP 方法路径路由名称功能
GET/admin/postsadmin.posts.index显示文章列表
GET/admin/posts/createadmin.posts.create显示创建文章页面
POST/admin/postsadmin.posts.store保存新文章
GET/admin/posts/{id}admin.posts.show显示单篇文章详情
GET/admin/posts/{id}/editadmin.posts.edit显示编辑文章页面
PUT/PATCH/admin/posts/{id}admin.posts.update更新文章
DELETE/admin/posts/{id}admin.posts.destroy删除文章

5. 注意事项

  1. 命名空间前缀
    如果你在多模块结构中使用了命名空间前缀(如 admin::),确保视图文件路径正确。例如:

    return view('admin::posts.index', compact('posts'));
    
  2. CSRF 保护
    对于 POSTPUTDELETE 请求,确保添加 @csrf@method 指令以避免 CSRF 错误。

  3. 权限控制
    如果需要限制某些用户的访问权限,可以在路由或控制器中添加中间件进行验证。例如:

    Route::middleware(['auth', 'can:manage-posts'])->group(function () {
        Route::resource('posts', PostController::class);
    });
    

通过以上方法,可以在 Blade 模板中轻松生成路由链接,并实现文章列表的增删改查功能。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论