热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Laravel博客开发|项目列表

在前面已经创建了项目数据表,并且为项目表填充了假数据,现在来实现项目列表页,将项目数据展示出来。添加控制器创建一个项目控制器ÿ

在前面已经创建了项目数据表,并且为项目表填充了假数据,现在来实现项目列表页,将项目数据展示出来。

添加控制器

创建一个项目控制器:

php artisan make:controller ProjectsController

打开文件,修改为如下内容:

namespace App\Http\Controllers;use App\Models\Project;
use Illuminate\Http\Request;class ProjectsController extends Controller
{public function index(){$projects = Project::orderBy('created_at', 'desc')->paginate(5);return view('projects.index',compact('projects'));}
}

添加视图

resources/views目录下添加一个projects目录:

mkdir resources/views/projects

然后在 projects目录下添加 index.blade.php文件:

touch resources/views/projects/index.blade.php

打开文件,输入如下内容:
resources/views/projects/index.blade.php

@extends('layouts.app')
@section('title')项目
@stop
&#64;section(&#39;content&#39;)<section class&#61;"hero is-link"><div class&#61;"hero-body"><div class&#61;"has-text-centered mt-2"><h1 class&#61;"title is-4">业余项目</h1><p class&#61;"subtitle is-6">业余时间通过构建项目来提升自己</p><a href&#61;"" class&#61;"button is-outlined is-info">联系</a></div></div></section><section class&#61;"section"><div class&#61;"container is-max-widescreen"><div class&#61;"columns"><div class&#61;"column is-9">&#64;foreach($projects as $key&#61;>$value)<div class&#61;"box is-flex is-justify-content-space-between is-align-items-center"><div class&#61;"is-flex"><div class&#61;"cover"><figure class&#61;"image is-128x128"><img class&#61;"is-rounded-2" src&#61;"%7B%7Basset(%24value->cover)%7D%7D" alt&#61;""></figure></div><div class&#61;"ml-2"><h2 class&#61;"is-size-4"><a href&#61;"">{{$value->name}}</a></h2><p class&#61;"is-size-7 has-text-grey-light">开始时间 {{$value->created_at->toDateString()}}</p><p class&#61;"is-size-6 has-text-grey">{{$value->description}}</p></div></div></div>&#64;endforeach<div class&#61;"box">{{$projects->render()}}</div></div><div class&#61;"column is-3"><div class&#61;"box"><p class&#61;"has-text-centered">站长&#xff1a;<a href&#61;"%7B%7Burl(&#39;/contact&#39;)%7D%7D" target&#61;"_blank">SevDot</a></p><hr><div class&#61;"is-flex is-justify-content-center"><figure class&#61;"image is-96x96"><img class&#61;"is-rounded" style&#61;"" src&#61;"%7B%7Basset(&#39;images/sevdot_avatar.jpg&#39;)%7D%7D" alt&#61;"SevDot 的头像"></figure></div><hr><div class&#61;"has-text-centered"><a href&#61;"" class&#61;"button is-light"><span class&#61;"icon"><i class&#61;"fa fa-github"></i></span></a><a href&#61;"" class&#61;"button is-info"><span class&#61;"icon"><i class&#61;"fa fa-weibo"></i></span></a><a href&#61;"" class&#61;"button is-success"><span class&#61;"icon"><i class&#61;"fa fa-weixin"></i></span></a></div></div><div class&#61;"box"><h2 class&#61;"title is-5 has-text-centered has-text-success">微信公众号</h2><hr><img src&#61;"%7B%7Basset(&#39;images/sevdots.png&#39;)%7D%7D" alt&#61;""></div></div></div></div></section>
&#64;stop

添加路由

使用 Laravel 提供的 resource 方法来定义项目资源路由。

routes/web.php

use App\Http\Controllers\ArticlesController;
use App\Http\Controllers\PagesController;
use Illuminate\Support\Facades\Route;Route::get(&#39;/&#39;, [PagesController::class, &#39;root&#39;])->name(&#39;root&#39;);
Route::get(&#39;/about&#39;, [PagesController::class, &#39;about&#39;])->name(&#39;about&#39;);
Route::get(&#39;/contact&#39;, [PagesController::class, &#39;contact&#39;])->name(&#39;contact&#39;);
Route::get(&#39;/blog&#39;, [ArticlesController::class, &#39;index&#39;])->name(&#39;articles&#39;);
Route::get(&#39;/blog/{article}&#39;, [ArticlesController::class, &#39;show&#39;])->name(&#39;article.show&#39;);Route::resource(&#39;projects&#39;, ProjectsController::class);

新增的 resource 方法将遵从 RESTful 架构为项目资源生成路由。该方法接收两个参数&#xff0c;第一个参数为资源名称&#xff0c;第二个参数为控制器名称。

Route::resource(&#39;projects&#39;, ProjectsController::class);

上面代码将等同于&#xff1a;

Route::get(&#39;/projects&#39;, [ProjectsController::class, &#39;index&#39;])->name(&#39;projects.index&#39;);
Route::get(&#39;/projects/create&#39;, [ProjectsController::class, &#39;create&#39;])->name(&#39;projects.create&#39;);
Route::get(&#39;/projects/{user}&#39;, [ProjectsController::class, &#39;show&#39;])->name(&#39;projects.show&#39;);
Route::post(&#39;/projects&#39;, [ProjectsController::class, &#39;store&#39;])->name(&#39;projects.store&#39;);
Route::get(&#39;/projects/{user}/edit&#39;, [ProjectsController::class, &#39;store&#39;])->name(&#39;projects.edit&#39;);
Route::patch(&#39;/projects/{user}&#39;, [ProjectsController::class, &#39;update&#39;])->name(&#39;projects.update&#39;);
Route::delete(&#39;/users/{user}&#39;, [ProjectsController::class, &#39;destroy&#39;])->name(&#39;projects.destroy&#39;);

展示

使用浏览器访问 [http://blog.test/projects](http://blog.test/projects)可看到如下所示&#xff1a;

在这里插入图片描述


推荐阅读
  • 本文详细探讨了在微服务架构中,使用Feign进行远程调用时出现的请求头丢失问题,并提供了具体的解决方案。重点讨论了单线程和异步调用两种场景下的处理方法。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文旨在介绍在iOS平台进行直播技术开发前的准备工作,重点讲解AVFoundation框架的基本概念和使用方法。通过对AVFoundation的深入理解,开发者能够更好地掌握直播应用中的音视频处理技巧。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 微信小程序:授权登录与手机号绑定
    本文详细介绍了微信小程序中用户授权登录及绑定手机号的流程,结合官方指引和实际开发经验,提供了一套完整的实现方案,帮助开发者更好地理解和应用。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 本文将详细介绍如何封装一个多功能的PickerView组件,包括文本选择、日期选择和地理位置选择等功能,旨在提供一个更加灵活和易于使用的PickerView解决方案。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
author-avatar
Triste夏木_668_365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有