Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在控制器之间共享laravel中雄辩的模型数据?_Php_Laravel_Eloquent - Fatal编程技术网

Php 如何在控制器之间共享laravel中雄辩的模型数据?

Php 如何在控制器之间共享laravel中雄辩的模型数据?,php,laravel,eloquent,Php,Laravel,Eloquent,让我们假设我有一些变量,这些变量在整个页面中使用,比如货币和语言。要在视图之间共享它们,我使用AppServiceProvider,如下所示: class AppServiceProvider extends ServiceProvider { public function boot() { View::share('currenciesGlobal',Currency::get()); View::share('languagesGlobal'

让我们假设我有一些变量,这些变量在整个页面中使用,比如货币和语言。要在视图之间共享它们,我使用AppServiceProvider,如下所示:

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::share('currenciesGlobal',Currency::get());
        View::share('languagesGlobal',Language::get());
    }
}
我可以在视图中轻松访问它们,但在控制器中无法访问它们。例如,我有一个产品列表,它根据用户选择的货币(作为currencyId存储在会话中)计算价格

举个例子:

public function getPrice()
{
    return number_format($this->price_retail / $this->sessionHelper->getCurrentCurrency()->conversion_rate, 2);
}
因此,30个产品将创建30个对货币表的查询。我希望有一个全局变量和雄辩的收集,我可以在每个控制器访问

我曾尝试将数据存储在配置文件中(但在配置文件中我无法使用elount/db);这是个相当糟糕的主意


有可能解决这个问题吗?

您可以使用继承:

创建一个
BaseController
并在其中定义全局变量,确保所有控制器都扩展此
BaseController

例如:

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class BaseController extends Controller
{
    /**
     * Add global vars, can even use eloquent models here.
     *
    */
    protected $global;

    public function __construct() 
    {
        // Fetch the user object
        $this->global = User::first();
        View::share('global', $this->global);
    }
}
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\BaseController;

class OtherController extends BaseController
{
    public function __construct() 
    {
        // call parent model constructor
        parent::__construct(); 
    }
    // $this->global is available throughout this controller.
    // ...

您可以发布eloquent/db的数据吗?您想从全局存储或需要哪种数据?附加说明:在子控制器中,我必须添加“parent::u construct();”,因为没有触发BaseController构造,也没有设置变量。