【问题标题】:Laravel share variable or object to all controller that is in AdminLaravel 将变量或对象共享给 Admin 中的所有控制器
【发布时间】:2020-02-22 12:00:25
【问题描述】:

在 Laravel 6 中,我正在创建一个管理区域。为此,我有一个简单的 Trait 有一组管理侧边栏导航项。为了显示菜单项,我在 view() 中将其作为变量传递,如下所示

....

use AdminMenu;

public function index()
{
    // nav items
    $navItems = $this->navItems();

    //view
    return view('admin.dashboard.index', compact('navItems'));
}

....

现在使用这种方法,我必须使用 trait 并在每个方法的每个控制器中传递变量。

问题

所以我正在寻找的是一种可以在一个地方设置的方式 这个变量将在所有Admin/Controllers 中可用(参考namespace App\Http\Controllers\Admin )和 其观点。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以在 trait 的 navItems() 方法中放置:

    View::share('navItems', $whateverTheValueIs);
    

    您还需要为视图导入外观;

    use Illuminate\Support\Facades\View;

    【讨论】:

    • 哦,哇,我不知道。非常感谢。还要澄清一件事。我应该在 Trait 的 construct() 或相同的方法 navItems() 中调用 View::share() 吗?
    • 随心所欲。它可用于全局注入视图变量。
    • 我在我的 Trait 方法中添加了navItems() { ... return View::share('navItems', $sideNavItems); },但给出了缺少变量navItems 错误
    • 啊!该死的..我必须调用Controllers中的方法??这样就可以了。没有其他方法,所以如果不加载控制器,我可以直接在所有 Admin 视图中使用它?
    • 你不需要返回它,也不需要在渲染视图时将它放在compact(...) 行中......但是是的,你仍然需要调用运行您的管理控制器(也许在__construct() 中有用?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多