[ Laravel 从入门到精通 ] 前端入门:在 Laravel 项目中使用 Bootstrap 框架

Laravel 如何引入 Bootstrap 如官方文档所言,Laravel 并不强制你使用 CSS 框架,但是开箱提供了对 Bootstrap 的支持,在 resources/js/bootstrap.js(在 Laravel 5.7 之前的版本位于 resources/assets/js/bootstrap.js)中,我们可以看到对 bootstrap js库的引入: try { ...

[ Laravel 从入门到精通 ] Blade 模板引擎高级篇:View Composer & 自定义指令

通过 View Composer 预设视图组件数据变量 我们已经在视图使用这篇教程演示了如何从后端传递数据给视图模板,但是这里有个场景需要拉出来讨论,我们的视图有很多公共部分,比如导航菜单、侧边栏、底部信息等,通常我们会以单独的视图组件来处理这些元素区块,但是如何从后端传递这些组件需要的数据变量是个问题,因为这些组件在多个页面中共用,从后端角度来看,会涉及到多个路由/控制器方法,难道我们...

[ Laravel 从入门到精通 ] Blade 模板引擎进阶篇:模板继承 & 组件引入

除了基本的数据渲染及控制结构指令之外,Blade 还提供了模板继承功能,从而允许视图模板之间继承、编辑及引入。 通过 @yield 和 @section/@show 在布局文件中定义内容 在理解 Blade 模板继承的时候,我们可以类比类的继承机制:在父类中定义抽象方法或公共方法,然后在子类中实现抽象方法或重写公共方法。在视图文件中,这个「父类」一般对应布局文件,不同的功能模块往往有不同...

[ Laravel 从入门到精通 ] Blade 模板引擎入门篇:数据渲染 & 控制结构

Blade 模板引擎概述 与视图文件紧密关联的就是模板代码,我们在视图文件中通过模板代码和 HTML 代码结合实现视图的渲染。和很多其他后端语言不同,PHP 本身就可以当做模板语言来使用,但是这种方式有很多缺点,比如安全上的隐患、容易产生业务逻辑与视图模板的耦合,而且在视图文件中到处使用...

在 Laravel 中通过自定义分页器分页方法实现伪静态分页链接以利于 SEO

我们知道,Laravel 自带的分页器方法包含 simplePaginate 和 paginate 方法,一个返回不带页码的分页链接,另一个返回带页码的分页链接,但是这两种分页链接页码都是以带问号的动态参数形式附加在查询字符串中,形如 https://laravelacademy.org?page=100,但是这种包含动态参数的 URL 格式对 SEO 不友好,我们最好将其转化为 htt...

[ Laravel 从入门到精通 ] 视图入门:Laravel 支持的视图格式以及在路由中的基本使用

Laravel 视图概述 我们在之前几篇教程中定义的路由大多数返回的都是纯字符串文本或者字符串拼接的 HTML,这主要是为了测试方便,在实际开发中,除了 API 路由返回指定格式数据对象外,大部分 Web 路由返回的都是视图,以便实现更加复杂的页面交互,我们在前面已经看到过了视图的定义方式: return view('以.分隔的视图模板路径'); 我们将在这篇教程中具体讨论视图实现技术。...

[ Laravel 从入门到精通 ] 表单方法伪造与跨站请求伪造(CSRF)攻击防护

表单方法伪造 有时候,我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式,而 HTML 表单仅支持 GET 和 POST 两种方式,如果要使用其他的方式,则需要自己来定义实现。 HTTP 请求方式概述 最常见的 HTTP 请求方式自然是 GET 和 POST,相信你已经很熟悉,除此之外,HTTP 协议还定义了很多其他的请求方式,可以在 HTTP/1.1: Method De...

[ Laravel 从入门到精通 ] 路由进阶使用:模型绑定、兜底路由、频率限制和路由缓存

路由模型绑定 我们在使用路由的时候一个很常见的使用场景就是根据资源 ID 查询资源信息: Route::get('task/{id}', function ($id) { $task = \App\Models\Task::findOrFail($id); }); Laravel 提供了一个「路由模型绑定」功能来简化上述代码编写,通过路由模型绑定,我们只需要定义一个特殊约定的参数...

[ Laravel 从入门到精通 ] Laravel 控制器:从 MVC 模式到资源控制器

控制器概述 到目前为止,我们定义的所有路由都是基于闭包函数实现的,前面已经提到过,随着应用体量的增长,不可能将所有路由都定义在单个文件中,且对于复杂的业务逻辑,闭包函数也不足以支撑,所以和其他 Web 应用框架一样,我们还可以通过控制器来定义路由。 说到这里,我们就不得不提一下 MVC 设计模式,这个模式最早在 Ruby On Rails 中引入,然后被基本上所有的 Web 框架所借鉴和...

[ Laravel 从入门到精通 ] Laravel 路由分组规则:中间件、子域名、路由前缀和命名空间

常言道「物以类聚,人以群分」,同样,在日常开发中,我们通常会将具有某些共同特征的路由进行分组,这些特征包括是否需要认证、是否具有共同的路由前缀或者子域名、以及是否具有相同的控制器命名空间等,显然,对路由按照共同特征进行分组后可以避免重复为某些路由定义相同的路由特征,让代码更加简洁,可读性和可维护性更好。 所谓路由分组,其实就是通过 Route::group 将几个路由聚合到一起,然后给...