gpt4 book ai didi

Laravel 5.1 - 调用未定义的方法 Illuminate\View\Compilers\BladeCompiler::createPlainMatcher()

转载 作者:行者123 更新时间:2023-12-01 03:41:05 24 4
gpt4 key购买 nike

尝试将我的项目从 L5 升级到 L5.1,这是不兼容的:

Call to undefined method Illuminate\View\Compilers\BladeCompiler::createPlainMatcher()



这是导致异常的代码:
Blade::extend(function($view, $compiler) {
$pattern = $compiler->createPlainMatcher('spaceless');
return preg_replace($pattern, '$1<?php ob_start(); ?>$2', $view);
});

Blade::extend(function($view, $compiler) {
$pattern = $compiler->createPlainMatcher('endspaceless');
return preg_replace($pattern, '$1<?php echo trim(preg_replace(\'/>\s+</\', \'><\', ob_get_clean())); ?>$2', $view);
});

我应该更改什么才能使此代码在 Laravel 5.1 中工作?

最佳答案

我有同样的问题。我查看了@lukasgeiter 的评论,确实有效,我将继续使用它。他指的是向 AppServiceProvider 添加 Blade 指令调用。 .

public function boot()
{
Blade::directive('datetime', function($expression) {
return "<?php echo with{$expression}->format('m/d/Y H:i'); ?>";
});
}

我为我的 Laravel 5.0 应用程序创建了一个 Blade 特定的服务提供者,并且有一些我不想重写的自定义函数,所以我添加了 createOpenMatcher 功能我的自定义 BladeServiceProvider。

就我而言,我是这样添加的。
<?php namespace App\Providers;

use Blade;
use Illuminate\Support\ServiceProvider;
use Illuminate\View\Compilers\BladeCompiler;

class BladeServiceProvider extends ServiceProvider {

/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
Blade::extend(function($view, $compiler) {
$pattern = $this->createOpenMatcher('spaceless');
return preg_replace($pattern, '$1<?php ob_start(); ?>$2', $view);
});

Blade::extend(function($view, $compiler) {
$pattern = $this->createOpenMatcher('endspaceless');
return preg_replace($pattern, '$1<?php echo trim(preg_replace(\'/>\s+</\', \'><\', ob_get_clean())); ?>$2', $view);
});
}

public function createOpenMatcher($function){
return '/(?<!\w)(\s*)@'.$function.'\(\s*(.*)\)/';
}
}

希望这可以帮助!

关于Laravel 5.1 - 调用未定义的方法 Illuminate\View\Compilers\BladeCompiler::createPlainMatcher(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com