Laravel5.3 中根据条件继承不同的视图的问题

我想根据不同的情况选择继承不同的视图


@if ($admin)
    @extends('layouts.admin')
@else
    @extends('layouts.app')
@endif

我传过来的$admin变量是存在的,但是为什么最终继承的是layouts.app,并且继承了2次,是否视图继承不能够使用if条件来进行处理?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
LearnKuJ

@extends 在模板里出现几次,就会被解析几次,并且解析是独立的,不依赖于你的上下文,你这样写实际出来的模板是这样的:

<?php if($admin): ?>

<?php else: ?>

<?php endif; ?>

<?php echo $__env->make('layouts.admin', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>
<?php echo $__env->make('layouts.app', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>

要想根据不同情况继承不同的模板,可以这样做:

@extends($admin ? 'layouts.admin' : 'layouts.app')

最终出来的模板是这样的:

<?php echo $__env->make($admin ? 'layouts.admin' : 'layouts.app', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>
8年前 评论

@TimJuly 非常感谢,我后来想到的也是视图的加载顺序会在@if这些条件之前,不过脑子一下子没有转过弯来用你给的这种方法~

8年前 评论

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