laravel中的全局变量

时间:2013-11-06 09:49:01

标签: php laravel laravel-4 global-variables

在PHP中,我曾经在我的header.php中定义了一些变量,并在我的所有页面中使用它们。我怎么能在Laravel中有这样的东西?

我不是在谈论View::share('xx', 'xx' );

假设我想要一个包含数字的变量,我需要在我的所有控制器中使用这个数字来计算。

4 个答案:

答案 0 :(得分:68)

听起来像configuration file的好候选人。

创建一个新的,我们称之为calculations.php

Laravel~4ish:

app
    config
        calculations.php

Laravel~5ish:

config
    calculations.php

然后将东西放入新的配置文件中:

<?php return [ 'some_key' => 42 ];

然后在某处检索代码中的配置(注意文件名成为配置项的各种“命名空间”):

echo Config::get('calculations.some_key'); // 42 in Laravel ~4
echo config('calculations.some_key'); // 42 in Laravel ~5

答案 1 :(得分:6)

BaseController上设置一个属性,该属性应位于controllers目录中。

您的控制器应扩展BaseController类,从而继承其属性。

答案 2 :(得分:0)

您可以使用View Composers

而不是使用文档中描述的引导方法,您可以使用:

public function boot()
{
    // Using class based composers...
    view()->composer(
        '*', 'App\Http\ViewComposers\ProfileComposer'
    );

    // Using Closure based composers...
    view()->composer('*', function ($view) {

    });
}

这将呈现您使用

声明的任何变量
$view->with('yourVariableName', 'yourVariableValue');

到您应用中的所有观看次数。

以下是我在我的一个项目中如何使用它的完整示例。

应用/提供者/ ComposerServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
     /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer(
            '*', 'App\Http\ViewComposers\UserComposer'
        );
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

应用/ HTTP / ViewComposers / UserComposer.php

<?php

namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;
use Illuminate\Contracts\Auth\Guard;

class UserComposer
{

    protected $auth;

    public function __construct(Guard $auth)
    {
        // Dependencies automatically resolved by service container...
        $this->auth = $auth;
    }

    public function compose(View $view)
    {
        $view->with('loggedInUser', $this->auth->user());
    }
}

请记住,因为您宣布了一个新的服务提供商,因此需要将其包含在&#39;提供商中。 config / app.php

中的数组

答案 3 :(得分:0)

您可以在file=open.("file.txt", "a") file.write(email) file.close() 中定义它们,例如:

app\Http\Controllers\Controller.php

然后,在所有控制器中,您可以执行以下操作来访问此属性:

<?php namespace App\Http\Controllers; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { public $test = 'something'; use AuthorizesRequests, DispatchesJobs, ValidatesRequests; }