如何将数据从视图传递到父布局?
How to pass data from view to parent layout?
抱歉,我需要粘贴这么多代码,但我认为这是理解我的结构所必需的。
我有一个用户资源Route::resource('/clients', ClientController::class)->middleware(['auth']);
对于路线 users.show
我在 UsersController
:
中有这个功能
public function show(Client $client)
{
return view('clients.show', [
'client' => $client,
]);
}
然后我用
简化了我的 clients.show
视图
<x-client-layout>
Bla Bla ...
</x-client-layout>
我的 layouts.client
@include('core.header')
@include('layouts.navigation-client')
<main class="flex flex-col w-full min-h-screen">
{{ $slot }}
</main>
@include('core.footer')
现在,对于 layouts.navigation-client
,我想创建一个 link 到路线 Route('users.show', $client->id)
。但是如何将 $client
传递给导航视图?
<x-nav-link :href="Route('users.show', $user->id)" :active="request()->routeIs('users.show')" icon="user">
可行但感觉不好的方法是:
Route('users.show', explode("clients/", url()->current())[1])
在您的 users.show
视图中,您可以将客户端 ID 传递给 <x-client-layout>
。
<!-- users.show view-->
<x-client-layout :client="$client">
<!-- component markup -->
</x-client-layout>
只需确保在 <x-client-layout />
组件中为 $client
定义一个默认值,比如使用 $client->id = 0
的客户端,否则您可能会得到未定义的错误。
您也可以仅在 $client->id
的值不是 0
时有条件地显示 link - 这样您就可以将默认值设置为 0
并使用<x-client-layout />
对于不需要 $client->id
并且不需要显示 link.
的其他视图
然后您可以将 $client
传递给 layouts.navigation-client
,然后将其用于 <x-nav-link />
@props([
'client'
])
@include('core.header')
@include('layouts.navigation-client', ['client' => $client])
<main class="flex flex-col w-full min-h-screen">
{{ $slot }}
</main>
@include('core.footer')
然后在layouts.navigation-client
<x-nav-link :href="route('users.show', $client->id)" :active="request()->routeIs('users.show')" icon="user" />
抱歉,我需要粘贴这么多代码,但我认为这是理解我的结构所必需的。
我有一个用户资源Route::resource('/clients', ClientController::class)->middleware(['auth']);
对于路线 users.show
我在 UsersController
:
public function show(Client $client)
{
return view('clients.show', [
'client' => $client,
]);
}
然后我用
简化了我的clients.show
视图
<x-client-layout>
Bla Bla ...
</x-client-layout>
我的 layouts.client
@include('core.header')
@include('layouts.navigation-client')
<main class="flex flex-col w-full min-h-screen">
{{ $slot }}
</main>
@include('core.footer')
现在,对于 layouts.navigation-client
,我想创建一个 link 到路线 Route('users.show', $client->id)
。但是如何将 $client
传递给导航视图?
<x-nav-link :href="Route('users.show', $user->id)" :active="request()->routeIs('users.show')" icon="user">
可行但感觉不好的方法是:
Route('users.show', explode("clients/", url()->current())[1])
在您的 users.show
视图中,您可以将客户端 ID 传递给 <x-client-layout>
。
<!-- users.show view-->
<x-client-layout :client="$client">
<!-- component markup -->
</x-client-layout>
只需确保在 <x-client-layout />
组件中为 $client
定义一个默认值,比如使用 $client->id = 0
的客户端,否则您可能会得到未定义的错误。
您也可以仅在 $client->id
的值不是 0
时有条件地显示 link - 这样您就可以将默认值设置为 0
并使用<x-client-layout />
对于不需要 $client->id
并且不需要显示 link.
然后您可以将 $client
传递给 layouts.navigation-client
,然后将其用于 <x-nav-link />
@props([
'client'
])
@include('core.header')
@include('layouts.navigation-client', ['client' => $client])
<main class="flex flex-col w-full min-h-screen">
{{ $slot }}
</main>
@include('core.footer')
然后在layouts.navigation-client
<x-nav-link :href="route('users.show', $client->id)" :active="request()->routeIs('users.show')" icon="user" />