我在Blade模板中几次遇到@
符号。它有什么作用?示例如下所示。
@method('DELETE') @CRSF @foreach @endforeach
答案 0 :(得分:2)
这不是一个可以“翻译”为PHP的命令。 @
只是一个符号,或者是刀片相关关键字的前缀。
因此,此刀片的结果:
@foreach($users as $user)
<li>{{ $user->name }}</li>
@endforeach
将等于这个普通的PHP:
foreach($users as $user) {
echo "<li>{$user->name}</li>";
}
答案 1 :(得分:1)
这意味着您正在使用Blade指令。这些是Laravel模板引擎的功能。
答案 2 :(得分:1)
我知道您是在询问Blade,但这不是问题所在,评论是短暂的。此外,其他读者可能会发现这是在寻找@
的文档块。
在类或函数之前,以/**
开头的注释中,@
符号表示对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()
**/
如其他答案所述,@
符号是刀片“命令”(称为指令)的前缀。您专门询问的两个是内置在Laravel中的。您正在查看的对象可能是内置的,但是您可以将{/ 3}的指令添加到您经常执行/打印的内容中。
make your own-RESTful标准定义了请求方法PATCH和DELETE,它们不属于实际HTTP(S)标准。为了模拟这些不受支持的方法,在Laravel表单中的表单中添加了一个隐藏字段,以告知HTTP内核请求方法与用于路由目的的匹配方法是什么。因此,@method('DELETE')
的行为类似(虽然不尽人意,但您明白了):
echo '<input type="hidden" name="method" value="DELETE" />';
@method('DELETE')
以前是@csrf_field
,是用于获取带有CSRF令牌的隐藏输入的命令。 @csrf_token
也有一个只获得令牌的令牌,这对ajax请求很有用。 @csrf的功能类似(但不完全一样):
echo '<input type="hidden" name="_token" value="' . {$csrf_token() . '" />';
CSRF令牌是“ nonce”(仅使用一次的数字),有助于防止@csrf
。
在storage/framework/views/
中的缓存/已编译刀片中。