【发布时间】:2019-04-26 14:15:19
【问题描述】:
我在 Blade 模板中遇到过几次@ 符号。它在 laravel 刀片中有什么作用?示例如下所示。
@method('DELETE') @CRSF @foreach @endforeach
【问题讨论】:
标签: php laravel laravel-blade
我在 Blade 模板中遇到过几次@ 符号。它在 laravel 刀片中有什么作用?示例如下所示。
@method('DELETE') @CRSF @foreach @endforeach
【问题讨论】:
标签: php laravel laravel-blade
我知道你在问 Blade,但这不是问题,而且 cmets 是暂时的。此外,其他读者可能会在查找文档块 @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()
**/
正如其他答案中提到的,@ 符号是刀片“命令”的前缀,称为指令。您具体询问的两个是 Laravel 内置的。您正在查看的可能是内置的,但您可以将指令添加到 make your own 以用于您经常执行/打印的操作。
@method('DELETE') - RESTful 标准定义了请求方法 PATCH 和 DELETE,它们不是实际 HTTP(S) 标准的一部分。为了模拟这些不受支持的方法,在 Laravel 表单中的表单中添加了一个隐藏字段,以告诉 HTTP 内核请求方法是什么,以匹配用于路由目的的方法。所以@method('DELETE') 做了类似的事情(不是完全正确,但你明白了):
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 模板引擎的功能。
【讨论】: