设置全局默认laravel参数?

时间:2019-11-20 22:15:27

标签: laravel-6.2

我称其为我的许多观点:

public function index()
{
    return view('dashboard' , array(
      'companyName' => 'Yoyo.Yo',
      'showSlideMenu' => true,
      'showTopNavigation' => true,
      'showExpanded' => true,
      'userTasks' => COMMON_getUserTasks(),
      'userCash' => COMMON_getUserCash(),
    ));
}

我希望我的视图“自动”知道例如“ companyName”始终为“ Yoyo.yo”,而不必为每个视图都像上面那样设置。

有没有办法为这些值全局设置默认值?

上下文

我设置了默认的电子邮件验证路径:

  • 通过电子邮件/验证
  • 通过电子邮件发送/重新发送

使用:

Auth::routes();
Auth::routes(['verify' => true]);

在web.php

我可以轻松地编辑模板,但是我不知道如何制作正在创建的这些路线,并且了解每个视图上需要的变量。

(而且,当默认值通常相同时,必须为每个视图指定它很麻烦)

HACK

我知道我可以做类似模板的事情:

<?php
   $companyName = isset($companyName) ? $companyName : 'My Default';
?>

但这似乎太过分了。当然有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果需要允许轻松自定义此“常量”,则可以为其创建一个自定义配置文件(或附加到任何现有文件):

config/defaults.php

<?php
    return [
        "company_name" => "Acme Inc."
    ];

然后,您可以直接在视图上使用config facade:

resources/views/your-view.blade.php

<p>Welcome to {{ config("defaults.company_name") }}</p>

此外,您还可以使用环境变量,因此您无需更改任何代码,只需更改您的.env文件即可:

config/defaults.php

<?php
    return [
        "company_name" => env("DEFAULT_COMPANY_NAME", "Acme Inc.")
    ];

.env

DEFAULT_COMPANY_NAME=My Company

如果未在DEFAULT_COMPANY_NAME上设置.env,它将回退到“ Acme Inc。”。