更新这是Laravel 5.2& 5.3
我在这里有一个奇怪的。我们客户系统上的用户电子邮件地址有一个域,其中包含以下子字符串'@ parent'。我不是为了隐私而包括整个事情。
由于@parent
是一个Blade指令,Laravel似乎要处理或忽略@parent
并将其从页面上呈现的电子邮件地址中删除。
例如,假设电子邮件地址为john@parentstuff.com
。 Laravel将在页面上呈现以下内容:johnstuff.com
。了解它如何从电子邮件中删除@parent
?
我试图修复它:
1. {!! $user->email !!}
2. {{ e($user->email) }}
我知道这是Blade作为AJAX& amp;使用相同电子邮件地址的jQuery呈现内容在网站的其他位置显示得很好。
更新
经过进一步调查,似乎这可能是Blade处理@parent指令的一个错误。我为以下版本设置了3个新的Laravel项目:5.2,5.3和5.4。该项目是一个Laravel 5.2项目,仅供参考。
我为每个上述版本创建了以下设置来测试错误。
路线
Route::get('/test', function () {
$foo = 'john@parentingstuff.org';
return view('test')->with('foo', $foo);
});
模板
基
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>
测试视图
@extends('test-base')
@section('content')
{{$foo}}
@endsection
输出
理论
我在运行这些测试时注意到的一个非常有趣的案例是,在@section指令中使用{{$ foo}}变量而在@section指令之外移动它导致了两个不同的输出。
实施例
{{$foo}}
@section('content')
{{$foo}}
@endsection
这是......的输出。
结论 那么,有没有人知道如何修补Laravel 5.2或Laravel 5.3中的这个错误?目前,升级到L5.4不是我们客户的选择。
任何人都有任何他们能想到的聪明伎俩可能会有所帮助吗?
答案 0 :(得分:0)
我认为问题出在其他地方。你所做的事情可能比你写的要多。
示例控制器方法内容
return view('test', ['email' => 'john@parentstuff.com'];
示例视图:
Email is: {{ $email }}
结果是:
Email is: john@parentstuff.com
所以我相信你做的比你写的更多。
答案 1 :(得分:0)
您的设置中发生了一些非常棘手的事情,因为这不应该是可能的。 Laravel在解释任何变量之前处理刀片指令。
我用一个非常简单的例子进行了测试:
Route::get('test', function() {
$foo = 'john@parentstuff.com';
return view('test')->with('foo', $foo);
});
和Blade模板:
{{ $foo }}
它工作得很好。 @parent
未被解释。
答案 2 :(得分:0)
这是5.4之前的Laravel版本中的错误。请参阅以下内容:
答案 3 :(得分:0)
这也是Laravel 5.1中的一个错误。
快速解决方案可能是将 @ 符号更改为
java.rmi.server.codebase
解决它。