在Laravel Blade模板中@的含义是什么?

问题描述 投票:-1回答:3

我在Blade模板中偶尔遇到过@符号。它在laravel刀片中做了什么?示例如下所示。

@method('DELETE') @CRSF @foreach @endforeach 
php laravel laravel-blade
3个回答
1
投票

@在Docblocks中

我知道你在询问Blade,但这不是问题,评论是暂时的。此外,其他读者可能会发现这正在寻找docblocks @s是什么。

在一个类或函数之前以/**开头的注释中,@符号表示对Doxygen或PHPDoc等文档工具的指令(我想,我没有使用过那个)。那里的共同指令包括@param@return@see@seealso@TODO@link。一个例子是

/**
 * Function to do thing.
 * @param int $foo A variable used in the function for reasons.
 * @return A result of the thing done.
 * @seealso Bar::fubar()
 **/

@在Blade中

正如其他答案中所提到的,@符号是Blade“命令”的前缀,称为指令。你特别询问的两个是内置于Laravel。您正在查看的那些可能是内置的,但您可以为make your own添加指令,用于您经常打印/打印的内容。

方法

@method('DELETE') - RESTful标准定义请求方法PATCH和DELETE,它们不是实际HTTP(S)标准的一部分。为了模拟这些不受支持的方法,将一个隐藏字段添加到Laravel表单中的表单,以告诉HTTP内核请求方法用于匹配方法的路由目的。所以@method('DELETE')做的事情(不是exacatly,但你得到的想法):

echo '<input type="hidden" name="method" value="DELETE" />';

CSRF

@csrf以前的@csrf_field是使用CSRF令牌获取隐藏输入的命令。还有一个只能获得令牌 - @csrf_token - 这对于ajax请求很有用。 @csrf做的事情(但不完全是):

echo '<input type="hidden" name="_token" value="' . {$csrf_token() . '" />';

CSRF令牌是“nonce”(仅使用一次的数字),有助于防止Cross Site Request Forgery

storage/framework/views/的缓存/编译刀片中。


2
投票

它不是可以“翻译”到PHP中的命令。 @只是一个符号,或更多的刀片相关关键字的前缀。

所以这个刀片的结果:

@foreach($users as $user)
  <li>{{ $user->name }}</li>
@endforeach

将等于这个普通的PHP:

foreach($users as $user) {
  echo "<li>{$user->name}</li>";
}

1
投票

这意味着您正在使用Blade指令。这些是Laravel模板引擎的功能。

© www.soinside.com 2019 - 2024. All rights reserved.