Laravel 编译时的 blade 硬编码变量
Laravel blade hardcode variable on compile
我正在将我的一些视图字符串移动到配置中,因为我想对类似的网站使用相同的代码,我想知道是否有办法避免调用 Config:: 或 Lang:: on每个运行时。
<h1>{{ Config::get('siteName') }}</h1>
刀锋进
<h1><?php echo Config::get('siteName'); ?></h1>
但我希望它像
一样简单HTML
<h1>MySite</h1>
我的方法是尝试在 Blade 将视图编译为纯 PHP / HTML 时实现这一点,是否有任何内置方法可以做到这一点?我试过一些 Blade 方法,比如 @string 但没有结果
谢谢
在你的控制器上执行此操作
$siteName = Config::get('app.siteName');
View::make('xxx', array('siteName' => $siteName))
例如
并且您将能够仅使用
在您的视图中检索变量 siteName
{{$siteName}}
希望这会有所帮助(或者我不明白这个问题)
OK 通过扩展 Blade
解决了它
我创建了一个 blade 标签,例如
@hardcodeConfig('siteName')
在我的 blade_extensions 中,我这样做了:
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('hardcodeConfig');
$matches = [];
preg_match_all($pattern, $view, $matches);
foreach($matches[2] as $index => $key){
$key = str_replace([ "('", "')" ], '', $key);
$configValue = \Config::get( $key );
$view = str_ireplace($matches[0][$index], $configValue, $view);
}
return $view;
});
这正是我要找的,我为 Config 创建了一个,为 Lang 创建了另一个
我正在将我的一些视图字符串移动到配置中,因为我想对类似的网站使用相同的代码,我想知道是否有办法避免调用 Config:: 或 Lang:: on每个运行时。
<h1>{{ Config::get('siteName') }}</h1>
刀锋进
<h1><?php echo Config::get('siteName'); ?></h1>
但我希望它像
一样简单HTML<h1>MySite</h1>
我的方法是尝试在 Blade 将视图编译为纯 PHP / HTML 时实现这一点,是否有任何内置方法可以做到这一点?我试过一些 Blade 方法,比如 @string 但没有结果
谢谢
在你的控制器上执行此操作
$siteName = Config::get('app.siteName');
View::make('xxx', array('siteName' => $siteName))
例如
并且您将能够仅使用
在您的视图中检索变量 siteName{{$siteName}}
希望这会有所帮助(或者我不明白这个问题)
OK 通过扩展 Blade
解决了它我创建了一个 blade 标签,例如
@hardcodeConfig('siteName')
在我的 blade_extensions 中,我这样做了:
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('hardcodeConfig');
$matches = [];
preg_match_all($pattern, $view, $matches);
foreach($matches[2] as $index => $key){
$key = str_replace([ "('", "')" ], '', $key);
$configValue = \Config::get( $key );
$view = str_ireplace($matches[0][$index], $configValue, $view);
}
return $view;
});
这正是我要找的,我为 Config 创建了一个,为 Lang 创建了另一个