Модель доступа в блейде Laravel

#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