如何在Laravel 8中传递变量主布局刀片

1tu0hz3e  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(128)

我正在使用Laravel 8,但似乎不知道哪个控制器控制布局主刀片文件。我已经能够成功地将变量传递到子视图(配置文件页面)文件,但不知道如何实现与布局视图主刀片。
我正在尝试将变量从app\Http\Controllers中名为ProfileController的控制器传递到主刀片布局。在profile控制器中,我有一个从数据库中检索用户配置文件数据的代码。

$profileInfo = Profile::with('address')->where('id', '=', '1')->get();
return view('admin_pages.profile', compact('profileInfo'));

在profiles表中,我有名称和图像字段first_name, last_name, photo,可以使用foreach循环从传递给子视图的数据$profileInfo访问这些字段,方法是

@foreach($profileInfo as $data)
{{ $data->first_name}}
@endforeach

和/或其他信息。
我的主刀片文件位于resources\views\layout\admin.blade.php。我希望能够显示admin.blade.php中的namesphoto,以便登录用户在登录时可以看到他们的配置文件图像,即使他们没有访问他们的配置文件页面(子视图),该页面位于resources\views\admin_pages\profile.blade.php,扩展了主刀片(admin.blade.php)。
请帮忙。

iszxjhcz

iszxjhcz1#

解决方案1:您可以通过@extends as second argument函数从blade文件传递变量。
控制器:

public function index(){
$title='Sir/Madam';
return view('home',compact('title'));
}

Home.blade.php

<?php
    @extends('layouts.admin', ['title' => $title])

Layout.master.blade.php

dd($title)

您将看到结果。

8iwquhpp

8iwquhpp2#

我建议你去了解一下Laravel Component。
您可以在admin布局中使用动态数据使profile可重用,而无需在每个控制器和路由中传递变量。
使用Artisan创建Admin组件:

php artisan make:component Profile

它将创建一个Profile.php作为组件控制器和profile.blade.php
打开Profile.php并添加以下代码:

public function render()
    {
        return view('components.profile', [
            'profile' => Profile::with('address')->where('id', '=', '1')->first();
        ]);
    }

打开profile.blade.php文件

<div>
  {{$profile->first_name}}
</div>

现在,在模板管理器上呈现Profile组件。
替换

@foreach($profileInfo as $data)
{{ $data->first_name}}
@endforeach

<x-profile/>

您可以通过阅读此链接中的刀片式服务器文档了解更多信息

相关问题