如何在 Laravel 5.4 中从数据库设置全局变量

Ged*_*nas 1 laravel laravel-5

我在各种项目中经常面临同样的问题——我需要设置一些全局变量,database并能够在 laravel 的任何地方接收它们——视图、控制器、模型。是否可以?或者最简单的方法是什么?

为什么我需要这个?用于语言翻译。我不需要它们缓存并保存在文件中。对于可以从应用程序的任何位置获取的网站选项。要设置网站语言,因为我不想在 url 上设置 /language/ 前缀。

对不起,如果这个问题可以重复,但类似问题中的答案都没有以我解释的方式起作用。

iam*_*.in 5

您可以尝试使用视图编辑器将数据全局共享给所有视图。

public function compose(View $view)
{
    //get value from database
    $options = Model::where('domain_name', \Request::server("SERVER_NAME"))->get();
    //render to view
    $view->with('options', $options);
}
Run Code Online (Sandbox Code Playgroud)

$options变量(模型)将在每个视图可用。

要与所有控制器共享数据,请在基本控制器中定义变量以在继承基本控制器的控制器中访问它们

class Controller extends BaseController
{
    public $options = Model::where('domain_name', \Request::server("SERVER_NAME"))->get();
}
Run Code Online (Sandbox Code Playgroud)

你可以使用它访问它

class LoginController extends Controller
{
    public function dashboard()
    {
        //access here using
        $x = $this->options;
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样,您可以创建一个基本模型并使用继承属性来全局访问模型中的数据。

希望它对你有用。该options变量可能包含数据库中的所有选项。