我正在将一些视图字符串移动到配置,因为我想对相似的网站使用相同的代码,我想知道是否有办法避免在每个运行时调用Config ::或Lang ::
<h1>{{ Config::get('siteName') }}</h1>
刀片进入
<h1><?php echo Config::get('siteName'); ?></h1>
但我希望它只是简单的HTML,如
<h1>MySite</h1>
当Blade将视图编译为纯PHP / HTML时,我的方法是尝试实现这一点,是否有任何内置方法可以做到这一点?我尝试过一些像@string这样没有结果的Blade方法
由于
答案 0 :(得分:0)
在您的控制器上执行此操作
$siteName = Config::get('app.siteName');
View::make('xxx', array('siteName' => $siteName))
例如
您只能使用
在视图中检索te变量siteName{{$siteName}}
希望这会有所帮助(或者我可能不理解这个问题)
答案 1 :(得分:0)
通过扩展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
创建了另一个