基于Laravel通知电子邮件模板,这是我正在尝试做的事情.
我尝试使用变量进行电子邮件布局,以便在我的布局中定义一些样式,但可以在我的电子邮件视图中访问.
这是一个例子:
<!DOCTYPE html>
<html>
<head> [...]
</head>
@PHP
$style = ['body' => 'font-size:12px;color:#000;', 'paragraph' => 'font-size:10px;color:#eee;'];
@endPHP
<body style="{{ $style['body'] }}">
@yield('content')
</body>
</html>
在我的电子邮件视图中:
@extends('emails.layout')
@section('content')
<p style="{{ $style['paragraph'] }}">
Hi there!
</p>
@endsection
但这不起作用,因为我的部分无法访问$style变量.
所以,我使它工作的唯一方法是在我的布局和我的视图中包含一个PHP文件,我很确定这不是我应该用Laravel做的方式……
<?PHP include_once(base_path('resources/views/emails/variables.PHP')); ?>
有没有办法实现这个目标?
多谢你们!
解决方法:
理想情况下,您不应该尝试以这种方式包含PHP变量.从控制器返回视图时,您应该传递它呈现视图所需的所有变量:
class YourController
{
public function yourMethod()
{
$styles = getYourStyles();
return view('emails.view')->with([
'styles' => $styles
]);
}
}
这将使您的样式在整个视图中的$styles变量中可用.
或者,您可以使用配置来容纳变量,然后您可以在需要时随时访问它们.
return [
'paragraph' => 'font-size: 12px; font-weight: bold;'
];
在您的模板中:
<p style="{{ config('styles.paragraph') }}">