如何在 laravel blade 视图中突出显示字符串中的字符串
how to highlight string in a string in a laravel blade view
在我的模板某处我有这个:
{{ $result->someText }}
现在在这段文字中,我想突出显示字符串中的所有单词
{{ $searchString }}
所以我想我创建了一个新的 blade 指令:
{{ @highlightSearch($result->someText, $searchString) }}
Blade::directive('highlightSearch', function($input, $searchString)...
error: missing argument 2
发现指令不排除 2 个参数。我尝试了所有我能找到的解决方法,但 none 奏效了。他们总是 return 作为纯字符串的参数,甚至不传递实际值。
我尝试添加一个辅助函数,如下所述:。无效:
error: unknown function "highlightSearch"
那么如何在 laravel 中完成这个超级简单的任务呢?我不关心高亮功能,那几乎是一个one-liner。
我刚刚在 Laravel 5.1 中测试过,它没有任何问题:
\Blade::directive('highlightSearch', function($input) {
return "<?php echo strtoupper($input); ?>";
});
在boot
方法中AppServiceProvider
并且在视图中我可以使用:
@highlightSearch('test')
它 returns TEST
正如预期的那样。
确保您使用的是来自全局命名空间的 Blade,还有 运行
php artisan clear-compiled
确保所有内容都已刷新。如果没有帮助,您可以尝试 运行ning
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
现实情况是 blade 指令无法执行您需要它们执行的操作。他们是否应该不是我无法帮助的话题。但是,您可以在您的服务提供商处执行此操作:
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) !!}
在我的模板某处我有这个:
{{ $result->someText }}
现在在这段文字中,我想突出显示字符串中的所有单词
{{ $searchString }}
所以我想我创建了一个新的 blade 指令:
{{ @highlightSearch($result->someText, $searchString) }}
Blade::directive('highlightSearch', function($input, $searchString)...
error: missing argument 2
发现指令不排除 2 个参数。我尝试了所有我能找到的解决方法,但 none 奏效了。他们总是 return 作为纯字符串的参数,甚至不传递实际值。
我尝试添加一个辅助函数,如下所述:
error: unknown function "highlightSearch"
那么如何在 laravel 中完成这个超级简单的任务呢?我不关心高亮功能,那几乎是一个one-liner。
我刚刚在 Laravel 5.1 中测试过,它没有任何问题:
\Blade::directive('highlightSearch', function($input) {
return "<?php echo strtoupper($input); ?>";
});
在boot
方法中AppServiceProvider
并且在视图中我可以使用:
@highlightSearch('test')
它 returns TEST
正如预期的那样。
确保您使用的是来自全局命名空间的 Blade,还有 运行
php artisan clear-compiled
确保所有内容都已刷新。如果没有帮助,您可以尝试 运行ning
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
现实情况是 blade 指令无法执行您需要它们执行的操作。他们是否应该不是我无法帮助的话题。但是,您可以在您的服务提供商处执行此操作:
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) !!}