我有一个名为LanguageMiddleware.php
的中间件文件:
...
class LanguageMiddleware {
//ISO language codes:
public $languages = ['en','es','fr','de','pt','pl','zh','ja'];
...
LanguageMiddleware.php
位于laravelProj/app/Http/Middleware/
这是我的问题:我有一个名为master.blade.php
的刀片模板文件,我试图输出语言列表
@foreach (App\Http\Middleware\LanguageMiddleware\languages as $lang)
<a class=\"setLang\" href=\"lang/en\">{{ Locale::getDisplayLanguage($lang, $lang) }}</a><br>
@endforeach
我需要访问$languages
LanguageMiddleware.php
变量
master.blade.php
位于laravelProj/resources/views/layouts/
如何访问另一个类中的变量?
答案 0 :(得分:2)
这是简单的PHP内容。将该属性设置为static
,然后使用::
访问它。
class LanguageMiddleware {
public static $languages = ['en','es','fr','de','pt','pl','zh','ja'];
}
@foreach (App\Http\Middleware\LanguageMiddleware::$languages as $lang)
...
@endforeach
但你不应该在中间件中拥有它。您最好使用该数组添加配置(即 /config/app.php ),并使用Config::get
访问它。
答案 1 :(得分:1)
最好的方法是让一个具有可以在其范围之外访问的函数的类。我通常会在这里做类似的事情:
在app目录中,您可以创建一个新目录(例如libs),
将LanguageMiddleware.php
放在那里,
class LanguageMiddleware{
static function languages($lang){
//Do your languages code here
}
}
在app/start/global.php
pp_path().'/libs'
向addDirectories
添加composer.json
,
然后在"app/libs"
中添加autoLoad
到@foreach(LanguageMiddleware::languages($lang))
<a class=\"setLang\" href=\"lang/en\">{{ Locale::getDisplayLanguage($lang, $lang) }}</a><br>
@endforeach
数组。
在您的刀片模板中,您可以执行以下操作:
ExampleTable
这样,类及其功能现在可以在项目中调用它的任何地方使用。