我想从数据库中定义一些变量,将它们放在应用程序的任何位置(控制器和视图至少)。从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