#php #laravel #laravel-5 #laravel-5.4 #laravel-5.5
#php #laravel #laravel-5 #laravel-5.4 #laravel-5.5
Вопрос:
Я попытался получить доступ к model TemporarySubject через мой блейд-файл. Если данные существуют в модели, на моем блейде будет отображаться кнопка красного цвета, иначе она будет отображать кнопку с цветом по умолчанию
Ниже приведены некоторые из моего кода в блейде. Похоже, что код не выполняет условие @if @else, потому что на выходе отображается кнопка all с красным цветом, даже если данные не существуют в модели
@if ($rows->S4=='1')
@if (AppTemporarySubject::where('subject_name','=','S4'))
<button class="btn btn-danger btn-mini" title="Digital Logic">SCSR1013(S4)</button>
@else
<button class="btn btn-mini" title="Digital Logic">SCSR1013(S4)</button>
@endif
@endif
На выходе должна отображаться кнопка в цвете по умолчанию, потому что в temporary_subjects не содержится subject_name со значением ‘S4’, но вместо этого отображается кнопка красного цвета. Надеюсь, кто-нибудь сможет мне помочь с этой проблемой. Заранее спасибо
Комментарии:
1. Пожалуйста, не используйте такого рода запросы модели внутри вашего блейда, такая логика должна быть внутри контроллера или как метод и передаваться в представление .. для поддержания структуры MVC, которую дает вам laravel .
Ответ №1:
Ваше утверждение всегда возвращает true как есть, отсюда и причина, по которой всегда видна красная кнопка. Вы должны изменить свое условие на что-то вроде этого:
AppTemporarySubject::where('subject_name', 'S4')->exists(); // default is = so no reason to add it again.
Просто дополнительный совет: вместо этого будет лучше поделиться этим условием через контроллер.
Комментарии:
1. сэр, можете ли вы научить меня, как сделать это в контроллере и вызвать его в блейде? Я новичок в laravel, поэтому не понял
2. Вы должны ознакомиться с документацией, для начала вот как вы делитесь чем-то с представлением из действия маршрута: laravel.com/docs/master/views