Laravel 视图 使用技巧总结

简介: Laravel 搭建网站非常简单,相比于VUE等单页面项目,对SEO非常友好。Laravel 的 Blade 特性丰富,掌握 Blade 的使用技巧,能让我们的开发更快一步。

Laravel 搭建网站非常简单,相比于VUE等单页面项目,对SEO非常友好。Laravel 的 Blade 特性丰富,掌握 Blade 的使用技巧,能让我们的开发更快一步。


判断视图是否存在


我们可以在视图实际加载之前确认该视图文件是否存在。


if (view()->exists('my.page')) {
 // 载入视图
}


甚至可以使用一个数组来加载视图,这样只有第一个视图文件确实存在的视图会被加载。


return view()->first(['my.help', 'help'], $data);


错误状态码视图页面


如果想为一些特殊的 HTTP 返回码建立特定的错误页面。

比如 500 —— 只需要使用该码值创建视图文件,比如 resources/views/errors/500.blade.php ,

或者是 403.blade.php 等等,这些视图会在对应的错误码出现时自动被加载。


脱离控制器的视图


如果我们想让一个路由仅仅显示某个视图,不需要创建控制器,只需要使用 Route::view() 方法即可。


// 不要这样做
Route::get('help', 'TextsController@help');
class TextsController extends Controller
{
    public function help()
    {
        return view('texts.help');
    }
}
// 这样做
Route::view('help', 'texts.help');


视图 @auth 指令


不需要使用 if 来检查用户是否登录,使用 @auth 指令即可。


比较典型的方式是:


@if(auth()->user())
    // 该用户已登录
@endif


更短的用法:


@auth
    // 该用户已登录
@endauth


与 @auth 相对的是 @guest 指令:


@guest
    // 该用户未登录
@endguest


foreach 语句中的 $loop 变量


在 foreach 循环中,使用 $loop 变量来查看当前是否是第一次 / 最后一次循环。


@foreach ($users as $user)
     @if ($loop->first)
        第一次迭代。
     @endif
     @if ($loop->last)
        最后一次迭代。
     @endif
     <p>该用户id是:{{ $user->id }}</p>
@endforeach


同样也有诸如 loop−>iteration或loop->iteration 或 loop>iterationloop->count 等属性。


Blade 视图中的二级 $loop 变量


我们可以在 Blade 视图的二级 foreach 循环中使用 $loop 变量来表示外层的循环变量。


@foreach ($users as $user)
    @foreach ($user->articles as $post)
        @if ($loop->parent->first)
            这是父级循环中的第一次迭代
        @endif
    @endforeach
@endforeach


创建我们自己的 Blade 指令


我们只需要在 app/Providers/AppServiceProvider.php 中添加你自己的方法。


举个例子,如果需要将

标签替换为换行:


<textarea>@br2lf($post->post_text)</textarea>

theme: channing-cyan


本篇对Laravel常用技巧进行汇总,如果大家想了解某一个分支下的使用技巧,比如集合、Eloquent等可以查看我之前的文章。

然后将这个指令添加到 AppServiceProvider 的 boot() 方法中:


public function boot()
{
    //br to line feed
    Blade::directive('br2lf', function ($string) {
        return "<?php echo preg_replace('/\<br(\s*)?\/?\>/i', \"\n\", $string); ?>";
    });
}


视图指令: IncludeIf,IncludeWhen,IncludeFirst


如果我们不确定 Blade 文件是否存在,我们可以使用这些条件指令。

仅当 Blade 文件存在时载入 header:


@includeIf('my.header')


仅当用户的 role_id == 1 的时候载入 header:


@includeWhen(auth()->user()->role_id == 1, 'my.header')


尝试加载 my.header ,如果不存在,则加载 default.header:


@includeFirst('my.header', 'default.header')


相关文章
|
28天前
|
Python
创建Django项目,实现视图,路由
创建Django项目,实现视图,路由
|
2月前
|
缓存 API 数据库
Django中的视图装饰器:扩展视图功能的利器
【4月更文挑战第15天】Django视图装饰器用于扩展视图功能,如权限验证、缓存控制和日志记录。它们是Python的高级特性,能不修改原始函数代码就添加新功能。Django提供内置装饰器,如`@login_required`(强制用户登录)、`@cache_page`(缓存视图输出)和`@csrf_protect`(CSRF保护)。同时,开发者可自定义装饰器,例如上面的`timing_decorator`用于记录视图执行时间。使用装饰器时要注意性能影响、执行顺序和参数处理。装饰器增强了代码复用性和可维护性。
|
11月前
|
XML 中间件 数据格式
Django 高级指南:深入理解和使用类视图和中间件
Django 是一款强大的 Python Web 框架,它提供了一套完整的解决方案,让我们能够用 Python 语言快速开发和部署复杂的 Web 应用。在本文中,我们将会深入研究 Django 中的两个高级特性:类视图(Class-Based Views)和中间件(Middleware)。
|
7月前
|
Shell 数据库 Python
详细视图——基于函数的视图 Django
详细视图——基于函数的视图 Django
22 0
|
7月前
|
存储 数据库 Python
创建视图——基于函数的视图 Django
创建视图——基于函数的视图 Django
30 0
|
7月前
|
Shell 数据库 Python
删除视图——基于函数的视图 Django
删除视图——基于函数的视图 Django
31 0
|
7月前
|
Shell 数据库 Python
更新视图——基于函数的视图 Django
更新视图——基于函数的视图 Django
30 0
|
8月前
|
安全 Python
14 Django视图 - 视图函数
14 Django视图 - 视图函数
26 0
|
前端开发 JavaScript PHP
Yii2的视图是什么?底层原理是什么?
Yii2的视图是什么?底层原理是什么?
|
前端开发 PHP
Laravel 8 新特性:Artisan serve 改进、Tailwind 分页视图、路由命名空间更新
Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。
185 0

热门文章

最新文章