3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
在$data
你傳遞給admin.layouts.app
在不存在sidebar
當(dāng)您@include
從視圖中創(chuàng)建視圖時(shí),框架正在編譯一個(gè)新視圖,而$data
您傳遞給第一個(gè)view
視圖的視圖不會(huì)持久保存到新視圖中,這稱為shared view
.
您的問題有幾種解決方案,從最快到最好:
1) 直接將其傳遞給共享視圖
@include('admin.partials.sidebar.sidebar', ['logos' => $logos])
這將“共享”所需的數(shù)據(jù)shared view
。不用說,這不是最好的解決方案。
2)->share()
方法
在您的控制器中,執(zhí)行以下操作:
view()->share('logos', Setting::first());
這將$logos
在所有視圖中創(chuàng)建變量,包括共享視圖。將呼叫置于服務(wù)提供商內(nèi)部,您將不會(huì)有重復(fù)的代碼。
3) 查看作曲家
這是一個(gè)非常好的解決方案,如果您對(duì)此感興趣,請(qǐng)閱讀View Composers上的這篇文章
希望能幫助到你。

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
Sidebar 在每個(gè)刀片文件中調(diào)用,所以你應(yīng)該為它調(diào)用輔助函數(shù)。更改您的composer.json文件:
"autoload": {
"files": [
"app/helpers.php"
],
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
跑:
composer dump-autoload
在您的應(yīng)用程序文件夾中創(chuàng)建helpers.php文件。
并在helpers.php 中編寫您的函數(shù)。
function sidebar()
{
$data['logos'] = Setting::first();
return $data;
}
并在sidebar.php 中調(diào)用該函數(shù)

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用 Provider 和 Composer 來實(shí)現(xiàn)您的目標(biāo)
步驟1
首先在App\Http\View\composers目錄下創(chuàng)建一個(gè) Composer 類如果你已經(jīng)沒有這個(gè)目錄你可以創(chuàng)建一個(gè)
在那里創(chuàng)建一個(gè)文件SidebarComposer在那里您必須將數(shù)據(jù)分配給compose方法。下面我分享一個(gè)完整的作曲家代碼
<?php
namespace App\Http\View\composers;
use Illuminate\View\View;
use App\Models\SideMenu;
class SidebarComposer
{
protected $sidemenuItems;
public function __construct(SideMenu $SideMenu)
{
$this->sidemenuItems = $SideMenu::getAll();
}
public function compose(View $view)
{
$view->with('menuItems', $this->sidemenuItems);
}
}
我在這里打電話是Model為了獲取數(shù)據(jù),但你可以調(diào)用任何你喜歡的controller或repository
第二步:
創(chuàng)建服務(wù)提供者。您可以手動(dòng)創(chuàng)建它,但我建議通過命令來創(chuàng)建它
php artisan make:provider SidebarServiceProvider
然后注冊(cè)您的服務(wù)提供商 config/app.php
您的服務(wù)提供商,您會(huì)在boot那里找到方法,您必須調(diào)用view::composer該方法將您的數(shù)據(jù)傳遞到您的視圖中
public function boot()
{
View::composer('incl.sidebar', SidebarComposer::class);
}
- 3 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報(bào)