GVKun编程网logo

当从 Laravel 传递到 Vue 时,RAW HTML 标签会被剥离(laravel引入css)

5

对于想了解当从Laravel传递到Vue时,RAWHTML标签会被剥离的读者,本文将是一篇不可错过的文章,我们将详细介绍laravel引入css,并且为您提供关于laravel4:如何将原始HTML插

对于想了解当从 Laravel 传递到 Vue 时,RAW HTML 标签会被剥离的读者,本文将是一篇不可错过的文章,我们将详细介绍laravel引入css,并且为您提供关于laravel 4:如何将原始HTML插入标签?、Laravel 5 Mail模板显示html标签、laravel HTML、Laravel HTML 标签不会插入在线服务器的有价值信息。

本文目录一览:

当从 Laravel 传递到 Vue 时,RAW HTML 标签会被剥离(laravel引入css)

当从 Laravel 传递到 Vue 时,RAW HTML 标签会被剥离(laravel引入css)

如何解决当从 Laravel 传递到 Vue 时,RAW HTML 标签会被剥离?

我正在为现有的 Laravel 系统添加 Vue 支持。一些数据字段包含 HTML 标签。

在 Laravel 中使用 {!!选项。

在将它传递给 Vue 时,我发现有些标签被省略了。

例如

从 Laravel 传递的数据 - 我已经使用刀片中的 dd 命令验证了这一点。

    <div>
        <ul>
            <li>List 1</li>
            <li>List 2</li>
            <li>List 3</li>
        </ul>
    </div>

如下传递给Vue

这是Vue中接收到的数据。我已经用 console.log 和 Vue 开发者工具验证过。

    List1</li>List 2</li>List 3</li>

任何关于我可能做错的提示都会很棒。

解决方法

我遇到了同样的问题。这都是关于 XSS 漏洞的。解决方法可能是在 vue 组件上使用插槽和回显渲染视图,但也可以使用道具。

ExampleComponent.vue

<template>
  <div>
    <slot></slot>
  </div>
</template>

<script>
export default {};
</script>

返回渲染视图:

Route::get(''/test'',function () {
    return view(''test.index'',[''view'' => view(''test.list'',[''num'' => 5])->render()]);
});

test\index.blade.php

<example-component>
    {!!$view!!}
</example-component>

test\list.blade.php

<div >
    <ul>
        @for ($i = 0; $i < $num; $i++) 
            <li>List {{$i+1}}</li>
        @endfor
    </ul>
</div>

你也可以使用 props 但你需要 v-html 指令:

ExampleComponent.vue

<template>
  <div>
    <span v-html="view"></span>
  </div>
</template>

<script>
export default {
props:[''view'']};
</script>

test\index.blade.php

<example-component view="{{$view}}">
   
</example-component>

laravel 4:如何将原始HTML插入标签?

laravel 4:如何将原始HTML插入标签?

如何将原始HTML标记贴到标签上有一些简单的方法吗?我有这个:
{{ Form::label('firstName','First name <em>*</em>',array('class' => 'input_tag')) }}

它产生:

<labelfor="firstName">First Name &lt;em&gt;*&lt;/em&gt;</label>

但是标签EM没有被解释为它应该是.我想要的是:

<labelfor="firstName">First Name <em>*</em></label>

解决方法

在宏中使用sprintf要比重新编码快得多:
Form::macro('rawLabel',function($name,$value = null,$options = array())
{
    $label = Form::label($name,'%s',$options);

    return sprintf($label,$value);
});

Laravel 5 Mail模板显示html标签

Laravel 5 Mail模板显示html标签

我有主要的邮件模板(resources / views / mail.blade.PHP).这是使用我的所有邮件的常用模板,例如忘记密码或更改新密码. mail.blade.PHP的内容如下:

<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>

我通过CKEditor存储电子邮件模板的内容(在MysqL数据库中),它看起来像:

<p>Dear {{$username}},</p>
<p>This is your new password: {{$newPassword}}</p>

现在我在laravel 5.5中使用mail功能如下:

$content = str_replace(array('username','newPassword'),array($userName,$request->confirm_password),addslashes($emailTemplate->templateBody));

Mail::send(['html' => 'mail'],['content' => $content],function ($message) use($emailTemplate,$user){
$message->from($emailTemplate->fromEmail,$emailTemplate->fromName);
$message->to($user->email);
});

在mailtrap.io发送电子邮件后,我看到邮件如下:

SiteName
<p>Dear Niladri,</p> <p>This is your new password: 123456</p>

请注意,在mail.blade中写入SiteName的表,tr,td正在运行,并且电子邮件中没有显示HTML代码.没关系.但只有来自CKEditor的内容显示HTML标签(< p>< / p>).

我做错了什么吗?

解决方法

要在.blade.PHP文件中使用PHP变量的HTML内容,您需要使用{!! $variable !!}而不是{{$variable}}.第一个将呈现您的HTML,第二个将输出为字符串,包括HTML标记.您的mail.blade.PHP文件应如下所示:

<table>
  <tr>
    <td>SiteName</td>
  </tr>
  <tr>
    <td>{!! $content !!}</td>
  </tr>
</table>

laravel HTML

laravel HTML

laravel html标签用法

HTML::macro('name', function(){});
// 将 HTML 字符串转为实体
HTML::entities($value);
// 将实体转为 HTML 字符
HTML::decode($value);
// 生成 JavaScript 文件链接
HTML::script($url, $attributes);
// 生成 CSS 文件链接
HTML::style($url, $attributes);
// 生成一个 HTML 图片元素
HTML::image($url, $alt, $attributes);
// 生成一个 HTML 链接
HTML::link($url, 'title', $attributes, $secure);
// 生成一个 HTTPS 类型的 HTML 链接
HTML::secureLink($url, $attributes);
// 给资源文件生成一个 HTML link
HTML::linkAsset($url, $secure);
// 给资源文件生成一个 HTTPS HTML 链接
HTML::linkSecureAsset($url, $attributes);
// 给命名路由生成一个 HTML 链接
HTML::linkRoute($name, $parameters, $attributes);
// 给控制器动作生成 HTML 链接
HTML::linkAction($action, $attributes);
// 给邮件地址生成 HTML 链接
HTML::mailto($email, $attributes);
// 混淆一个邮件地址以阻止垃圾邮件扫描器的嗅探
HTML::email($email);
// 生成有序列表
HTML::ol($list, $attributes);
// 生成无序列表
HTML::ul($list, $attributes);
HTML::listing($type, $list, $attributes);
HTML::listingElement($key, $type, $value);
HTML::nestedListing($key, $value);
// 从数组中构建 HTML 属性
HTML::attributes($attributes);
// 构建单属性元素
HTML::attributeElement($key, $value);
// 混淆一个字符串以阻止垃圾邮件扫描器的嗅探
HTML::obfuscate($value);


Laravel HTML 标签不会插入在线服务器

Laravel HTML 标签不会插入在线服务器

您需要扩大数据库中内容列的大小。这意味着将类型从 varchar 更改为 text。

今天关于当从 Laravel 传递到 Vue 时,RAW HTML 标签会被剥离laravel引入css的介绍到此结束,谢谢您的阅读,有关laravel 4:如何将原始HTML插入标签?、Laravel 5 Mail模板显示html标签、laravel HTML、Laravel HTML 标签不会插入在线服务器等更多相关知识的信息可以在本站进行查询。

本文标签: