私はデータベースからいくつかの変数を定義して、アプリケーションのどの場所でも使用するようにしたいと考えています。laravelのデータベースからグローバル変数を定義する最良の方法
私はHTTP /コントローラ/ Controller.phpでこれを行う方法を見つけました:それは正常に動作します
namespace App\Http\Controllers;
use Session;
use Request;
use View;
use App\Http\Requests;
use Log;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function __construct()
{
$this->middleware(function ($request, $next) {
$t = array();
$translations = \App\Translation::all();
foreach ($translations as $translation) {
$t[$translation->code] = $translation->text;
}
View::share('t', $t);
});
}
}
- 私は私のアプリで{{$ tの[ '何かを'}}にアクセスすることができ、そこ認証ルート/register
または/login
の問題です。これらのページでは、$t
変数が定義されていません。
私はAuthがこの__constructの前にいくつかのアクションを実行するので、どのように修正すると思いますか?
また、すべてのアプリビューやコントローラで到達可能なデータベースから動的変数を設定する方が良いでしょうか?
(laravel 5.3)私はlaravelに新しいので、まだアーキテクチャを感じることはできません。
が理由だけではなく、ファイル 'cfg'を作成しないでください:
また、あなたはあなたから延びるベースコントローラでミドルウェアを含めることができますか? – Troyer
申し訳ありません、新しいlaravelには、これを行う方法がわかりません。 dbコールをそこに作ることはできますか? – Gediminas
ミドルウェアをファイルに移動し、Authコントローラ(変数が不足しているAuthビューを呼び出す)から参照する方法はありますか?最初に、ミドルウェアロジックを直接クローズしてから追加してみて、それが動作しているのを見てからファイルに移動してみることができます。下の私の答えを見てください。 – prograhammer