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

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


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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2
TimJuly

@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(); ?>
7年前 评论

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

7年前 评论

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