当前位置: 首页 > 知识库问答 >
问题:

如何在laravel刀片视图中高亮显示字符串中的字符串

益承颜
2023-03-14

在我的模板中,我有以下内容:

{{ $result->someText }}

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

{{ $searchString }}

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

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

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

错误:缺少参数2

发现指令不包含2个参数。我尝试了所有我能找到的解决办法,但没有一个奏效。它们总是以普通字符串的形式返回参数,甚至不传递实际值。

我尝试添加一个助手函数,如下所述:https://stackoverflow.com/a/32430258/928666.不起作用:

错误:未知函数“highlightSearch”

那么我如何在laravel中完成这个超级简单的任务呢?我不在乎高亮功能,那几乎是一句话。

共有2个答案

夏侯楷
2023-03-14

我刚刚在Laravel 5.1中进行了测试,它可以正常工作:

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

AppServiceProvider的boot方法中

在视图中,我可以使用:

@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输出超文本标记语言

谭景明
2023-03-14

现实是刀片指令无法完成您需要它们完成的任务。他们是否应该是一个我无法帮助的话题。但是,您可以在您的服务提供商中执行此操作:

use Illuminate\Support\Str;

/* ... */

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

然后在刀片中,你可以这样做:

{!! \Illuminate\Support\Str::highlightSearch($result->someText, $searchString) !!}
 类似资料:
  • Laravel中的刀片模板是否有类似Smarty的截断修改器? 我知道我可以在模板中写出实际的php,但我正在寻找更好的东西来编写(我们不要讨论整个php是一个模板引擎)。 例如,我在寻找这样的东西: 我知道我可以通过作曲家使用像树枝这样的东西,但我希望Laravel本身具有内置功能。 如果没有,可以像Smarty提供的那样创建自己的可重用修饰符。我喜欢Blade不会过度使用所有语法,但我认为tr

  • 问题内容: 非常简单的问题,但是由于某种原因,在谷歌搜索10分钟后,我在任何地方都找不到答案。使用JavaScript打印时如何显示转义符? 例: 给出: 当我要它给: 问题答案: 如果你的目标是 并以字符串文字形式输出它包含的内容,您可以使用: 添加外引号(至少在Chrome的实现中),但是其中的内容是字符串文字(是的,这有点令人困惑)。 接受您提供的内容(在这种情况下为字符串),并返回包含该值

  • 本文向大家介绍在Java字符串中最多显示10个字符,包括了在Java字符串中最多显示10个字符的使用技巧和注意事项,需要的朋友参考一下 要在一个字符串中最多显示10个字符,请使用Formatter类。 为Java中的Formatter类导入以下软件包- 创建一个新的Formatter对象- 现在让我们在一个字符串中最多显示10个字符- 以下是一个例子- 示例 输出结果

  • 本文向大家介绍MySQL查询在字符串中的特殊字符之前显示子字符串,包括了MySQL查询在字符串中的特殊字符之前显示子字符串的使用技巧和注意事项,需要的朋友参考一下 在MySQL中为此使用LOCATE()和SUBSTRING()方法。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是在子字符串中的特殊字符之前显示子

  • 我正在开发一款Android应用程序。我在MYSQL数据库中以blob类型保存PDF数据。我将以base64发送到Android应用程序。如何在Android应用程序中显示pdf?

  • 问题内容: 我需要帮助弄清楚如何在程序中显示文本,以便它可以在我创建的多边形形状的中间显示“停止”。我想做的是创建一个停车标志。我已经负责创建和显示该停车标志,因此现在只需要在屏幕上显示“停止”即可 } 问题答案: 更换用,并添加到它(多边形后): 关于的Javadoc : StackPane将其子级放在从后到前的堆栈中。子级的z顺序由子级列表的顺序定义,第0个子级是底部,最后一个子级在顶部。如果