从今天起,做一个会使用 view ()->exists 方法的人
Laravel News 网站的 Laravel Tutorials 和 Laravel Packages 板块其实是文章的两个分类,你看它们的请求地址就知道了。
- Laravel Tutorials:https://laravel-news.com/category/laravel-...
- Laravel Packages:https://laravel-news.com/category/laravel-...
它们都是文章列表,但用了不同的布局文件。背后实现的方式是 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年前 加精
学到了。
?
原来有判断view是否存在的函数呀。这样就可以很方便地搞wordpress的那种模版机制了。