Обработка результата
Третий аргумент View::make() и view() — функция, через которую проходит готовый HTML перед возвратом:
view(string $template, array $params = [], callable $callback = null): stringРаботает для любого типа шаблона — и для чанка, и для файла, и для @INLINE.
🔹 Удаление HTML
view('file:user-card', ['user' => $user], function ($buffer) {
return strip_tags($buffer);
});📄 Чистый текст без
<div>и<a>— удобно для текстовой части письма.
🔹 Минификация
view('file:page', [], function ($buffer) {
return preg_replace('/\s{2,}|\n/', '', $buffer);
});📉 Осторожно с
<pre>и<textarea>: там пробелы значимы, и такая замена их съест.
🔹 Цензура
view('file:comment', ['text' => $comment], function ($buffer) {
return str_ireplace(['дурак', 'идиот'], '[цензура]', $buffer);
});🔹 Замена абсолютных путей
view('file:page', [], function ($buffer) {
return str_replace('https://example.com/assets/', '/assets/', $buffer);
});🔁 Пригождается при переносе сайта между окружениями.
🔹 rel="nofollow" всем ссылкам
view('file:page', [], function ($buffer) {
return preg_replace('/<a (.*?)href="(.*?)"(.*?)>/i', '<a $1href="$2" rel="nofollow"$3>', $buffer);
});🔍 Против SEO-спама в комментариях и гостевом контенте.
Обработчик обязан вернуть строку
Возвращаемое значение подменяет вывод целиком. Забыли return — на месте шаблона окажется пустота.
Один шаблон, а не вся страница
Колбэк видит результат этого вызова view(), а не итоговый документ. Чтобы обработать страницу целиком, вешайте обработку на ответ, а не на шаблон — см. Middleware.