从今天起,做一个会使用 view ()->exists 方法的人

Laravel News 网站的 Laravel Tutorials 和 Laravel Packages 板块其实是文章的两个分类,你看它们的请求地址就知道了。

它们都是文章列表,但用了不同的布局文件。背后实现的方式是 view()->exists 方法。

class CategoryController extends Controller
{
    public function show($slug)
    {
        $category = Category::with('posts')->where('slug', $slug)->firstOrFail();

        if (view()->exists('category.custom.' . $category->slug)) {
            $view = 'category.custom.' . $category->slug;
        } else {
            $view = 'category.show';
        }

        return view($view, [
            'category' => $category,
            'posts' => $category->posts()->orderBy('published_at', 'desc')->paginate(10),
        ]);
    }
}

view()->exists 方法用来判断指定视图文件是否存在,存在返回 true,不存在返回 false。在上面的代码实例中,Laravel Tutorials 使用到了自定义布局文件 laravel-tutorials.blade.php,而 Laravel Packages 没有自定义布局文件,使用的则是默认布局文件 show.blade.php

参考链接

https://laravel-news.com/view-exists

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 7年前 加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

学到了。

7年前 评论

?
原来有判断view是否存在的函数呀。这样就可以很方便地搞wordpress的那种模版机制了。

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!