如何将数据变量传递给Volt/Blade中的布局函数

问题描述 投票:0回答:1

我在 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 laravel-blade laravel-livewire laravel-10 volt
1个回答
0
投票

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')
© www.soinside.com 2019 - 2024. All rights reserved.