Как отобразить данные до одного часа от времени начала и скрыть через один час для времени окончания laravel

#php #laravel #laravel-5.5

#php #laravel #laravel-5.5

Вопрос:

Я хочу отобразить кнопку или ссылку до одного часа с момента начала и скрыть через один час с момента окончания в Laravel blade.

Я использую Laravel 5.5.

Я пытаюсь:

 $ptime = date('h:i a',strtotime('-1 hour',strtotime($scheduleGroupWorkout->schedule_start_at)));
$ctime = date('h:i a', strtotime($scheduleGroupWorkout->schedule_start_at));
$cendtime = date('h:i a', strtotime($scheduleGroupWorkout->schedule_end_at));
$eendtime = date('h:i a',strtotime(' 1 hour',strtotime($scheduleGroupWorkout->schedule_end_at)));
  

Лезвие Laravel

 @if(strtotime($ctime) < strtotime($ptime) amp;amp; strtotime($eendtime) < strtotime($cendtime))
 <div class="schedule-time-btn">
    <a href="#" target="_blank" class="btn btn-success">Join</a>
 </div>
@endif
  

Комментарии:

1. Использовать DateTime класс

2. является ли $scheduleGroupWorkout->schedule_start_at данными из красноречивой модели?

3. Я предлагаю использовать ajax.

Ответ №1:

Несколько пунктов, которые вы должны соблюдать :

  1. Используйте Carbon вместо функций php.
  2. Лучший вариант для загрузки кнопки — AJAX. Нет проверки во время загрузки страницы.
  3. Добавьте кнопку в DOM с помощью AJAX, проверяя текущее время между временем начала и окончания.
  4. Используйте Blad для вашего метода контроллера ajax для загрузки кнопки
  5. Используя Ajax, никто не может изменить URL-адрес вашей кнопки, также добавьте UUID в URL-адрес кнопки, чтобы, если кто-нибудь скопирует вашу кнопку, не использовать в следующий раз.

Ответ №2:

Вы можете использовать Carbon:

 @if(Carbon::parse($ctime)->lt(Carbon::parse(ptime)) amp;amp; Carbon::parse($eendtime)->lt(Carbon::parse(cendtime)))

 <div class="schedule-time-btn">
    <a href="#" target="_blank" class="btn btn-success">Join</a>
 </div>
@endif
  

Если вы извлекаете данные из модели, вы можете добавить schedule_start_at в массив models $dates:

в вашей модели :

 $dates = ['schedule_start_at','schedule_end_at'];
  

Затем laravel автоматически проанализирует дату с помощью carbon.

Комментарии:

1. Не думаете ли вы, что в этом случае, если загрузить страницу до 2 часов. Тогда как он будет проверять, должна ли отображаться эта кнопка или нет?

2. Обновленный код: @if(Carbon Carbon::parse($ ctime)-> lt(Carbon Carbon::parse($ ptime)) amp;amp; Carbon Carbon::parse($ eendtime) -> lt( Carbon Carbon::parse($ cendtime))) <div class=»schedule-time-btn»> <a href=»#» target=»_blank» class=»btn btn-success»>Присоединиться</a> </div> @endif