如何在laravel blade视图中突出显示字符串中字符串

qlzsbp2j  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(145)

在我的模板中有这样一个地方:

{{ $result->someText }}

现在,在这段文字中,我想突出显示字符串中的所有单词

{{ $searchString }}

所以我想我创建了一个新的刀片指令:

{{ @highlightSearch($result->someText, $searchString) }}

Blade::directive('highlightSearch', function($input, $searchString)...

错误:缺少参数2
发现指令不排除2个参数。我尝试了我能找到的所有解决方法,但都不起作用。它们总是以普通字符串的形式返回参数,甚至不传递实际值。
我尝试添加一个helper函数,如下所示:https://stackoverflow.com/a/32430258/928666 .不起作用:
错误:未知函数“highlightSearch”
那么在laravel中我该怎么做这个超级简单的任务呢?我不关心高亮功能,那几乎是一行程序。

zbdgwd5y

zbdgwd5y1#

事实上,刀片式服务器指令无法完成您需要它们完成的任务。至于它们是否应该执行,我对此并没有什么意见。不过,您可以在服务提供商那里执行此操作:

use Illuminate\Support\Str;

/* ... */

Str::macro('highlightSearch', function ($input, $searchString) {
      return str_replace($searchString, "<mark>$searchString</mark>", $input); 
      //Or whatever else you do
});

在Blade中,您可以执行以下操作:

{!! \Illuminate\Support\Str::highlightSearch($result->someText, $searchString) !!}
xvw2m8pv

xvw2m8pv2#

我刚刚在Laravel 5.1中测试了它,它工作没有任何问题:

\Blade::directive('highlightSearch', function($input) {
    return "<?php echo strtoupper($input); ?>";
});

AppServiceProvider方法中
在视图中,我可以使用:

@highlightSearch('test')

并且它返回预期的TEST
确保您正在使用全局命名空间中的Blade,同时运行

php artisan clear-compiled

以确保所有内容都已刷新。如果没有帮助,您可以尝试运行

composer dump-autoload

以防万一。

    • 编辑**

我还测试了它与额外的参数,它似乎真的没有工作的预期,所以最合理的将是添加帮助文件(如果你没有任何与简单的PHP函数),例如:

function highlight_search($text, $searchString) 
{
   // return whatever you want
}

然后在Blade中将其用作任何其他函数,如下所示:

{{ highlight_search('Sample', 'Sam') }}

可选地使用

{!! highlight_search('Sample', 'Sam') !!}

如果希望highlight_search输出HTML

相关问题