@在Laravel Blade模板中是什么意思?

时间:2019-04-26 14:15:20

标签: php laravel laravel-blade

我在Blade模板中几次遇到@符号。它有什么作用?示例如下所示。

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

3 个答案:

答案 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)

@在Docblocks中

我知道您是在询问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()
 **/

@在Blade中

如其他答案所述,@符号是刀片“命令”(称为指令)的前缀。您专门询问的两个是内置在Laravel中的。您正在查看的对象可能是内置的,但是您可以将{/ 3}的指令添加到您经常执行/打印的内容中。

方法

make your own-RESTful标准定义了请求方法PATCH和DELETE,它们不属于实际HTTP(S)标准。为了模拟这些不受支持的方法,在Laravel表单中的表单中添加了一个隐藏字段,以告知HTTP内核请求方法与用于路由目的的匹配方法是什么。因此,@method('DELETE')的行为类似(虽然不尽人意,但您明白了):

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

CSRF

@method('DELETE') 以前是@csrf_field,是用于获取带有CSRF令牌的隐藏输入的命令。 @csrf_token也有一个只获得令牌的令牌,这对ajax请求很有用。 @csrf的功能类似(但不完全一样):

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

CSRF令牌是“ nonce”(仅使用一次的数字),有助于防止@csrf

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