我在Blade模板中偶尔遇到过@
符号。它在laravel刀片中做了什么?示例如下所示。
@method('DELETE') @CRSF @foreach @endforeach
我知道你在询问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“命令”的前缀,称为指令。你特别询问的两个是内置于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_field
是使用CSRF令牌获取隐藏输入的命令。还有一个只能获得令牌 - @csrf_token
- 这对于ajax请求很有用。 @csrf做的事情(但不完全是):
echo '<input type="hidden" name="_token" value="' . {$csrf_token() . '" />';
CSRF令牌是“nonce”(仅使用一次的数字),有助于防止Cross Site Request Forgery。
在storage/framework/views/
的缓存/编译刀片中。
它不是可以“翻译”到PHP中的命令。 @
只是一个符号,或更多的刀片相关关键字的前缀。
所以这个刀片的结果:
@foreach($users as $user)
<li>{{ $user->name }}</li>
@endforeach
将等于这个普通的PHP:
foreach($users as $user) {
echo "<li>{$user->name}</li>";
}
这意味着您正在使用Blade指令。这些是Laravel模板引擎的功能。