gpt4 book ai didi

php - 如何在 Laravel Blade 模板中编写 PHP 代码?

转载 作者:行者123 更新时间:2023-12-05 03:07:39 31 4
gpt4 key购买 nike

我正在为一个用 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代码不行吗?

最佳答案

(这里最好在controller中实现action,可以做一个helper类,通过service provider绑定(bind),然后使用)

在某些情况下,将 PHP 代码嵌入到您的 View 中会很有用。您可以使用 Blade @php 指令在模板中执行纯 PHP block :

@php
//
@endphp

这完全一样:

<?php

?>

如果您需要共享全局变量,最好的方法是使用 View facade 的方法 share(),并在 上执行此操作服务提供商https://laravel.com/docs/5.7/views#passing-data-to-views

用例示例:布局的嵌套结构 => 使用短名称保存全局变量,指向树遍历的更大名称(+ 当我们更改结构时易于维护,只需执行一次)。前任:

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()
{
//
}
}

我在这里创建了一个新的 ServiceProvider,你也可以使用现有的,比如 AppServiceProvider

如果要执行的操作取决于 Controller 调用,最好在 Controller 上实现,如果它是 View 特定的(内部逻辑)。那么@php @endphp 是实现这一目标的好方法。

也用于共享变量知道我们可以在布局 View 中简单地使用@php @phpend(它将在所有包含的部分和扩展它的对象上可用)。所以你知道@include 和@yield,@extend 的本质。但是,这不是最佳做法或推荐。推荐使用上面的辅助 View::share()。

另一种编写代码的方法是创建您的自己的指令:

(请注意,您只需要在服务提供者上创建一个函数,并且您有自己的指令,)

全局共享功能怎么样?创建并使用全局助手。通过创建一个包含所有助手(函数)的文件。然后要么使用 composer** 自动加载**。或者通过服务提供商绑定(bind)include_once

关于php - 如何在 Laravel Blade 模板中编写 PHP 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46822675/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com