Что означает @ в шаблонах Laravel Blade? - PullRequest
0 голосов
/ 26 апреля 2019

Я пару раз встречал символ @ в шаблонах Blade. Что это делает в лезвии Laravel? Примеры приведены ниже.

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

Ответы [ 3 ]

2 голосов
/ 26 апреля 2019

Это не команда, которая может быть "переведена" на PHP.@ - это просто символ или более префикс для ключевых слов, связанных с блейдом.

Таким образом, результат этого блейда:

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

будет равен этому простому PHP:

foreach($users as $user) {
  echo "<li>{$user->name}</li>";
}
1 голос
/ 26 апреля 2019

@ in Docblocks

Я знаю, что вы спрашиваете о 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

Как упоминалось в других ответах, символ @ является префиксом для «команд» Blade, называемых директивами.Два, о которых вы спрашиваете, встроены в Laravel.Те, на которые вы смотрите, вероятно, встроены, но вы можете добавить директивы к сделать свои собственные для вещей, которые вы часто делаете / печатаете.

Метод

@method('DELETE') - RESTful стандарт определяет методы запроса PATCH и DELETE, которые не являются частью фактического стандарта HTTP (S).Чтобы эмулировать эти неподдерживаемые методы, в формы в формах Laravel добавляется скрытое поле, чтобы сообщить ядру HTTP, каков метод запроса для сопоставления методов для целей маршрутизации.Так что @method('DELETE') делает что-то вроде (не точно, но вы поняли идею):

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» (числа, используемые только один раз), которые помогают предотвратить Подделка межсайтовых запросов .

В кешированном / скомпилированном блейде в storage/framework/views/.

1 голос
/ 26 апреля 2019

Это означает, что вы используете директивы Blade.Это функции механизма шаблонов Laravel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...