Laravel 中的 `HtmlString` 是做啥用的?

     2023-03-14     102

关键词:

【中文标题】Laravel 中的 `HtmlString` 是做啥用的?【英文标题】:What is `HtmlString` used for in Laravel?Laravel 中的 `HtmlString` 是做什么用的? 【发布时间】:2017-07-08 06:01:45 【问题描述】:

本课程:HtmlString

html = $html; /** * 获取 HTML 字符串。 * * @return 字符串 */ 公共函数 toHtml() 返回 $this->html; /** * 获取 HTML 字符串。 * * @return 字符串 */ 公共函数 __toString() 返回 $this->toHtml();

使用:

 函数 csrf_field()
    
        return new HtmlString('');
    

它只是“构造”一个​​字符串并返回字符串本身!

谁能解释一下?非常感谢:)

【问题讨论】:

【参考方案1】:

由于它实现了一个接口 (Htmlable),因此其他方法可能会检查给定的字符串是否应被视为 HTML。

用的不多,但比如Illuminate/Support/helpers.php:519

if (! function_exists('e')) 
    /**
     * Escape HTML special characters in a string.
     *
     * @param  \Illuminate\Contracts\Support\Htmlable|string  $value
     * @return string
     */
    function e($value)
    
        if ($value instanceof Htmlable) 
            return $value->toHtml();
        

        return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false);
    

这里可以看到如果$value附着Htmlable接口,就可以马上打印出来。否则,字符串以转义形式打印。

【讨论】:

是的,如果您实际编写 HTML(可能使用 Parsedown 或在数据库中存储实际 HTML),您可能会使用 HtmlString 的实例,您可以将字符串作为 HtmlString 而不是文本,它会跳过转义(基本上使用 $variable 而不是必须使用!! $variable !!)。但是,您需要确保您可以信任文本的来源,这就是转义首先存在的原因。【参考方案2】:

如果我理解得很好,你想在.blade.php 文件中使用它吗? 使用

csrf_field()

【讨论】:

当然是像你说的那样使用XD,但是我很好奇它下面的HtmlString类,谢谢你的时间。 请注意csrf_field() 如何返回HtmlString,因此在刀片中您可以使用 ... 而不是!! ... !! 进行打印。无需记住打印原始数据并确保它不会被转义

Laravel 中的闭包是啥?

】Laravel中的闭包是啥?【英文标题】:WhatisClosureinLaravel?Laravel中的闭包是什么?【发布时间】:2018-05-0101:53:41【问题描述】:我在middlewere中看到了一个Laravel函数:publicfunctionhandle($request,Closure$next,$guard=null)if(Auth::guard($guard)->ch... 查看详情

Laravel 中的控制台路由是啥?它是如何工作的? [关闭]

】Laravel中的控制台路由是啥?它是如何工作的?[关闭]【英文标题】:WhatistheconsolerouteinLaravel?Andhowitworks?[closed]Laravel中的控制台路由是什么?它是如何工作的?[关闭]【发布时间】:2021-10-1414:21:17【问题描述】:Laravel中的控制台... 查看详情

用户应该是 Laravel 中的资源吗?

】用户应该是Laravel中的资源吗?【英文标题】:ShouldusersbearesourceinLaravel?【发布时间】:2015-04-0123:51:45【问题描述】:在具有用户身份验证的Laravel应用程序中,用户应该是资源吗?Route::resource(\'user\',\'UserController\');如果是这样... 查看详情

帮助类续集

重要修正:在代码973行,这样写是不起用作的修正一下:1Htmlstring=Htmlstring.Replace("<","");2Htmlstring=Htmlstring.Replace(">","");3Htmlstring=Htmlstring.Replace(" ","");感谢@彼年豆蔻 细心发现的问题。 查看详情

Laravel 中的 Ajax 删除

】Laravel中的Ajax删除【英文标题】:AjaxDeleteinLaravel【发布时间】:2019-05-0307:32:31【问题描述】:如何在不刷新页面的情况下删除表中的数据这里是我的href按钮这两个按钮是删除一个是存档,一个是强制删除问题是它们在点击时... 查看详情

Laravel 路由中的“as”关键字是啥意思?

】Laravel路由中的“as”关键字是啥意思?【英文标题】:Whatdoes"as"keywordmeaninLaravelrouting?Laravel路由中的“as”关键字是什么意思?【发布时间】:2015-08-3121:04:29【问题描述】:据我从Laravel文档中了解到,它用于重定向,但... 查看详情

更新模型时使用 HtmlString 会引发 InvalidOperationException

】更新模型时使用HtmlString会引发InvalidOperationException【英文标题】:UsingHtmlStringthrowsanInvalidOperationExceptionwhenupdatingthemodel【发布时间】:2012-07-0818:33:22【问题描述】:我正在像这样在我的模型上使用HtmlString属性publicHtmlStringHtmlget;s... 查看详情

WhereHas Laravel 中的关系计数条件是啥

】WhereHasLaravel中的关系计数条件是啥【英文标题】:WhatisrelationshipcountconditioninWhereHasLaravelWhereHasLaravel中的关系计数条件是什么【发布时间】:2015-10-1522:20:49【问题描述】:我很难理解WhereHas中的关系计数条件。文档页面没有讨论... 查看详情

Laravel 验证 - 输入必须是数组中的项目之一

】Laravel验证-输入必须是数组中的项目之一【英文标题】:Laravelvalidation-inputmustbeoneofitemsinarray【发布时间】:2015-08-1710:59:40【问题描述】:在Laravel5中是否有一个内置的验证器来检查值是否在我的白名单值的数组中。有点像:$rul... 查看详情

Laravel 中的关系

】Laravel中的关系【英文标题】:RelationshipsinLaravel【发布时间】:2012-12-2606:42:13【问题描述】:我有两张桌子,Galleries和Gallery_items。在Galleries我保存了作者是谁等信息。在Gallery_items中,我保存图库包含的每张图片。现在我想获... 查看详情

在 Laravel 中使用 VS Code 中的语法检查的常量的最佳实践是啥?

】在Laravel中使用VSCode中的语法检查的常量的最佳实践是啥?【英文标题】:WhatisthebestpracticetouseConstantsinLaravelthatleveragesyntaxcheckinginVSCode?在Laravel中使用VSCode中的语法检查的常量的最佳实践是什么?【发布时间】:2021-06-0115:37:51【... 查看详情

在 laravel 中将“历史数据”存储到数据库中的正确方法是啥?

】在laravel中将“历史数据”存储到数据库中的正确方法是啥?【英文标题】:Whatistherightwaytostore\'historicaldata\'intodatabaseinlaravel?在laravel中将“历史数据”存储到数据库中的正确方法是什么?【发布时间】:2019-12-1015:54:31【问题描... 查看详情

模型中的 Laravel 动态可填充

】模型中的Laravel动态可填充【英文标题】:LaravelDynamicFillableinModels【发布时间】:2017-02-2706:47:04【问题描述】:遇到了laravel5.2的问题。以下是eloquent创建操作(调用后)时的错误,Model.php453中的批量赋值异常:column_name以下是需... 查看详情

Laravel 中的会话过期时间

】Laravel中的会话过期时间【英文标题】:SessionexpiretimeinLaravel【发布时间】:2018-04-1913:57:18【问题描述】:在我的项目中,会话过期时间是30分钟(1800秒)。我使用Laravel5.2并将会话保存在redis中。但是,我对此感到困惑:如果我... 查看详情

laravel框架中的make方法详解

为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢?因为,每个人的思维方式和方向是不一样的,所以就会出现这样的一个场景,当你... 查看详情

Laravel 模块中的路由

】Laravel模块中的路由【英文标题】:RoutinginLaravelmodule【发布时间】:2016-03-0323:11:41【问题描述】:我在Laravel5中创建了一个模块,即在与app文件夹相同的级别内,作为在Laravel中创建HMVC结构的一部分。我在模块文件夹中有两个模... 查看详情

Laravel 模块中的路由

】Laravel模块中的路由【英文标题】:RoutinginLaravelmodule【发布时间】:2016-03-0323:11:41【问题描述】:我在Laravel5中创建了一个模块,即在与app文件夹相同的级别内,作为在Laravel中创建HMVC结构的一部分。我在模块文件夹中有两个模... 查看详情

laravel eloquent 中的本地键是啥

】laraveleloquent中的本地键是啥【英文标题】:whatislocalkeyinlaraveleloquentlaraveleloquent中的本地键是什么【发布时间】:2015-01-0408:56:44【问题描述】:http://laravel.com/docs/4.2/eloquent#relationships本地键在这个东西中是什么意思?这是否意味... 查看详情