Laravelの開発で、一般ユーザーと管理ユーザーでレイアウトを変えたいことがあり、
次のようなコーディングをしました。
@if($mode == 'admin') @extends('admin.layout') @else @extends('layout') @endif
しかし、これでは常にlayoutの方が読み込まれ、admin.layoutは読み込まれることはありませんでした。
なんでかなと考えたのですが、Bladeはまずファイル中のextendsを最優先で探し、そこから解釈するのだなと思い当たりました。
そのため、前述のコーディングでは、二つ目のextendsが有効になっているのではと。
そこで、下記のようにextends内で、切り替えを行うようにしたところうまくいきました。
@extends(($mode == 'admin')?'admin.layout':'layout')
ただ、コントローラーの中で親レイアウトを指定する変数を定義しておくのが一番良い方法なのでしょうね。