1

@在 Blade 模板中遇到过几次这个符号。它在 laravel 刀片中有什么作用?示例如下所示。

@method('DELETE') @CRSF @foreach @endforeach 
4

3 回答 3

4

@ 在文档块中

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

/**在以类或函数开头的注释中,@符号表示对 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 内置的。您正在查看的那些可能是内置的,但您可以添加指令来为您经常做/打印的事情制作自己的指令。

方法

@method('DELETE')- RESTful 标准定义不属于实际 HTTP(S) 标准的请求方法 PATCH 和 DELETE。为了模拟这些不受支持的方法,在 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/.

于 2019-04-26T15:38:33.187 回答
2

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

所以这个刀片的结果:

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

将等于这个普通的 PHP:

foreach($users as $user) {
  echo "<li>{$user->name}</li>";
}
于 2019-04-26T14:32:07.130 回答
1

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

于 2019-04-26T14:21:06.450 回答