我在 Laravel 中使用 Livewire/Volt 和 Blade 时遇到问题,我正在使用名为“app.blade.php”的布局,这是应用程序的基本布局,并且具有
$htmlClass
和 $bodyClass
。app.blade.php
:
<!DOCTYPE html>
@php
$bodyClass??= [];
$bodyClass = [
...$bodyClass,
'another utility class'
];
$htmlClass = is_array($htmlClass ??= '') ? implode(' ', $htmlClass) : $htmlClass;
$bodyClass = implode(" ", $bodyClass);
@endphp
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" class="{{ $htmlClass }}"> <--- this
<head>
...
</head>
<body class="{{ $bodyClass }}"> <--- this
在
register.blade.php
:
<?php
$dataToLayout = [
'htmlClass' => ['h-full'],
'bodyClass' => ['dark:bg-slate-900', 'bg-orange-600', 'flex', 'items-center'],
];
layout('layouts.app');
我想将
$dataToLayout
传递给 app.blade.php
但我尝试过的都不起作用。
有什么建议吗?
我尝试传入布局函数,但这不起作用。
layout('layouts.app', [...])
laravel Blade 只允许单向继承,不能从子组件导入 php 变量。 但你可以尝试用这种方式编码:
app.blade.php:
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" class=" @yield('htmlClass')"> <--- this
<head>
...
</head>
<body class="@yield('bodyClass')">
注册.blade.php:
@extends('layouts.app');
@section('htmlClass', 'h-full')
@section('bodyClass', 'dark:bg-slate-900 bg-orange-600 flex items-center')