На одной и той же странице у меня в зависимости от роли пользователя и статуса задачи можно изменить разные поля, соответственно в bade у меня идет проверка на роль и если доступа к полю нет то ставится disable. Laravel же кэширует все эти значения и вне зависимости от статуса выдает одно и тоже. Поискал в интернете, там советуют прописать очистку кэша в middleware. Но как по мне это костыль. Проверка осуществляется через расширение Blade класса, возможно кэшируется именно он, но в любом случаи я не знаю как отключить это.
blade кешируется очень относительно в php код который всё равно выполняется каждый раз.
Не могу себе представить способ которым вы достаете данные в шаблоне так чтобы они закешировались.
Я создал функцию balde @isField(имя поля) которая и возвращает disable в случаи если поле недоступно. После выполнения php artisan view:clear все отрабатывает правильно.
dmalapsh, посмотрите в кеш блейда, если он закешировал директиву с вбитым значением, значит директивы кешируются сильно.
И делайте обычный @if в таком случае.
Александр Аксентьев, можете подсказать как кеш блейда посмотреть. И второе, у меня функция проверки прописана в классе модели, из блейда не очень хорошо к этой функции идти, нету других методов?
Ну если blade кеширует так кастомные директивы, то выбора особо у вас нет.
Хотя было бы странно что стандартные @if работают из кеша как надо, а ваша нет.
Так что вероятно косяк где-то у вас в коде имеется еще.
А лучше через if, тогда на основе результата будет выводить в шаблоне, то что прописано в самом шаблоне. https://laravel.com/docs/5.8/blade#custom-if-statements
Не надо выносить вещи которые в вёрстку попадают так далеко от самих шаблонов, выглядит как плохая практика