热门标签 | 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;

在这里插入图片描述


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文讨论了如何在不使用SearchBar display controller的情况下,单独使用SearchBar并捕获其textChange事件。作者介绍了实际状况,即左侧SliderMenu中的SearchBar需要在主页TableView中显示搜索结果。然后,作者提供了解决方案和步骤,帮助读者实现这一功能。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
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社区 版权所有