我正在为一个在Laravel中完成的站点编写代码,我知道不建议在Blade模板中编写PHP代码,但在这个例子中,我的可用时间有限。
@php
if($_POST["submit"]){
$name = $_POST["name"];
$email = $_POST["email"];
$missingName = "<p><strong>Please eneter your name.</strong></p>";
$invalidEmail = "<p><strong>Invalid Email.</strong></p>";
if($name){
$name = filter_var($name, FILTER_SANITIZE_STRING);
}else{
$errors .= $missingName;
}
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
}else{
$errors .= $invalidEmail;
}
if($errors){
$resultMessage = '<div class="alert alert-danger">' . $errors .'</div>';
}else{
$to = "leads@relevant.systems";
$subject = "DijiJock update request form.";
$message = "<html>
<body>
<h2 style='color:black'>DijiJock update request form.</h2>
<p style='color:green'>Name: $name</p>
<p style='color:green'>Email: $email</p>
<p style='color:black'>$name has requested DijiJock updates, please forward all updates to $email.</p>
</body>
</html>";
$headers = "Content-type: text/html";
if(mail($to, $subject, $message, $headers)){
$resultMessage = '<div class="alert alert-success">Thank you for the meesage!</div>';
}else{
$resultMessage = '<div class="alert alert-warning">Email not sent! Please try again later.</div>';
}
}
echo $resultMessage;
}
@endphp
中间的PHP代码不起作用?
使用控制器和刀片视图方法。
Mail::send('emails.YOUR_BLADE_FILE', ['user' => $user, 'request' => $request], function ($message) use ($user, $request) {
$message->to('EMAIL_ACCOUNT', 'EMAIL_USER_NAME');
$message->subject('EMAIL SUBJECT');
});
尝试使用此功能。这很容易,非常干净。
(在这里,更好地在控制器中实现操作,您可以创建一个helper类,通过服务提供者绑定它,然后使用它)
在某些情况下,将PHP代码嵌入视图是很有用的。您可以使用Blade@php指令在模板中执行一块普通php:
@php
//
@endphp
这是完全相同的:
<?php
?>
如果您需要共享全局变量,最好的方法是使用视图facade的方法share(),并在服务提供者上这样做。https://laravel.com/docs/5.7/views#passing-数据到视图
exof用例:布局的嵌套结构=
namespace App\Providers;
use Illuminate\Support\Facades\View;
class ViewGlobaleVarServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{ // \/\/\/\/\/\/\/\/ <====== !
View::share('sysAdmDashPgContainerHeader', 'system.admin.dashboard.partials.pageContainer.partials._header');
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
在这里,我创建了一个新的服务提供者,您可以使用现有的服务提供者,比如AppServiceProvider。
如果要执行的操作取决于控制器调用,那么最好在控制器上实现,如果是视图特定的(内部逻辑)。那么@php@endphp就是实现这一点的好方法。
同样,为了共享变量,我们可以简单地在布局视图中使用@php@phpend(它将在所有包含的部分和扩展它的对象上可用)。所以你知道“包含”和“收益”的本质,在这个问题上延伸。然而,这不是最佳实践或建议。建议使用上面的helper View::share()。
编写代码的另一种方法是创建自己的指令:
(注意,您只需在服务提供商上创建一个函数,并且您有自己的指令,)
那么,如何在全球范围内共享功能呢?创建并使用全局辅助对象。通过创建包含所有帮助程序(函数)的文件。然后使用编写器**自动加载**。或通过服务提供商绑定一次include_。
>
作曲家自动加载:https://stackoverflow.com/a/49549907/7668448
通过服务提供商绑定:https://stackoverflow.com/a/32422699/7668448
问题内容: 我正在阅读Laravel Blade 文档,但无法弄清楚如何在模板内分配变量以供以后使用。我不能这样做,因为那会回显“任何内容”,而我不希望那样。 我知道我可以做到,但这并不优雅。 在Blade模板中是否有更好,更优雅的方法来做到这一点? 问题答案: 不建议在视图中进行操作,因此没有刀片标签。如果您确实想在刀片视图中执行此操作,则可以在编写时打开一个php标签,也可以注册一个新的刀片标
Laravel中的刀片模板是否有类似Smarty的截断修改器? 我知道我可以在模板中写出实际的php,但我正在寻找更好的东西来编写(我们不要讨论整个php是一个模板引擎)。 例如,我在寻找这样的东西: 我知道我可以通过作曲家使用像树枝这样的东西,但我希望Laravel本身具有内置功能。 如果没有,可以像Smarty提供的那样创建自己的可重用修饰符。我喜欢Blade不会过度使用所有语法,但我认为tr
需要在刀片laravel-value输入中输入变量php,变量i to用于添加i的值,在值=“{$TAREFA-&>TETAPA.i} 为此:value=“{Tarefa->Tetapa1}value=”{Tarefa->Tetapa2}…至10
我能用Eval让它工作...但我们都知道eval是邪恶的。 有人能给我指点一下这方面的教程吗?除了简单的代币替换之外,我似乎找不到任何东西。
我有一些我需要的特定代码,为了能够有某些我不想每次都写的I/O东西,我只想能够添加一个Java类,这样它就已经有了那些代码,我试着做了: 基本上这个东西需要在xml中,但我不知道如何正确地编写它,我以为到处都写${filename}就可以了,但它不起作用。总而言之,我希望文件的名称写在我写“${filename}”的地方,我该怎么做呢?
我有一个自定义函数,我想在刀片模板中传递它。这里是功能: 用法如下: 是否可以将自定义功能传递给刀片模板?非常感谢。