我想從數據庫中定義一些變量,將它們放在應用程序的任何位置(控制器和視圖至少)。從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 [ '東西'}}在我的應用程序,但有是Auth路由/register
或/login
的問題,在這些頁面$t
變量未定義。
我認爲,因爲在這之前我的__construct執行一些操作,如何解決它?
或者,也許有更好的方法來設置從所有應用程序視圖和控制器可訪問的數據庫的動態變量?
(laravel 5.3)我是laravel的新手,所以無法感受到建築。
爲什麼就是不創建一個文件'cfg'? – Troyer
對不起,新來laravel,不知道該怎麼做。我可以在那裏打數據庫嗎? – Gediminas
如何將中間件轉換爲文件並從Auth控制器引用它(調用缺少變量的Auth視圖)?您可以先嚐試在關閉時直接添加中間件邏輯,然後在看到它工作後移動到文件中。請參閱下面的答案。 – prograhammer