24

PHP では、自分の中でいくつかの変数を定義し、header.phpそれらをすべてのページで使用していました。Laravelでそのようなものをどのように持つことができますか?

私は話しているのではありませんView::share('xx', 'xx' );

数値を保持する変数が必要で、何かを計算するためにすべてのコントローラー内でこの数値が必要であるとします。

4

4 に答える 4

78

構成ファイルの良い候補のように思えます。

新しいものを作成し、それを呼び出しましょうcalculations.php:

Laravel〜4っぽい:

app
    config
        calculations.php

Laravel 5,6,7+:

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,6,7+
于 2013-11-06T13:11:25.737 に答える
0

View Composerを使用できます

また、ドキュメントに記載されている起動方法を使用する代わりに、次の方法を使用できます。

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');

アプリ内のすべてのビューに。

これは、私のプロジェクトの 1 つでこれをどのように使用したかの完全な例です。

アプリ/プロバイダー/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());
    }
}

新しいサービス プロバイダーを宣言したため、 config/app.phpの「providers」配列に含める必要があることを覚えておいてください。

于 2015-06-23T02:56:05.607 に答える