Laravel: использование Javascript внутри blade @if - PullRequest
0 голосов
/ 28 июня 2018

Мне было интересно. Невозможно поместить Javascript в blade @if правильно? Является ли blade @if какой-либо формой php, но использование php-кода не рекомендуется, верно? Что я должен делать? Вот логика того, чего я пытаюсь достичь. В принципе, какие есть альтернативные способы достичь того, что я пытаюсь сделать? Я пытаюсь показать кнопку, когда три условия выполнены.

@if(isToday($one_parking_info->booking_data->m_bkl_end_date) && isBeforeElevenPM() && notEndInT($one_parking_info->booking_data->m_plots_address_city))
    <button type="button" class="btn btn-primary btn-sm" onClick="cancelBooking('{{ $one_parking_info->booking_data->m_bkl_gov_id }}')">取消</button>
@endif

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Я думаю:

@if(isToday($one_parking_info->booking_data->m_bkl_end_date) && isBeforeElevenPM() && notEndInT($one_parking_info->booking_data->m_plots_address_city))
    @include('script.js')
    <button type="button" class="btn btn-primary btn-sm" data-id="{{ $one_parking_info->booking_data->m_bkl_gov_id }}">取消</button>
@endif

<script>
  $('body').on('click','.btn-sm',function(){
        var id = $(this).attr('data-id');
        //
          logic of cancelBooking
        //
   })
</script>
0 голосов
/ 28 июня 2018

Blade - это разновидность php, поэтому вся работа выполняется на сервере. Таким образом, вы не можете вызывать функции JavaScript внутри @if выражения. Вместо этого вы можете запустить функции в контроллере и вернуть значение, чтобы сказать, следует ли вам включать кнопку или нет, или вы можете иметь JavaScript, чтобы показать или скрыть кнопку, если вам все равно, смогут ли пользователи найти и показать кнопку если они хотят.

Что-то вроде вашего контроллера return view('your view')->with(['showButton' => $shouldShow) и, на ваш взгляд, @if($shouldShow) и остальной части вашего кода

0 голосов
/ 28 июня 2018

Ваш JS должен быть публичным или детским, и будет выглядеть примерно так:

@if(isToday($one_parking_info->booking_data->m_bkl_end_date) && isBeforeElevenPM() && notEndInT($one_parking_info->booking_data->m_plots_address_city))
    @include('script.js')
    <button type="button" class="btn btn-primary btn-sm" onClick="cancelBooking('{{ $one_parking_info->booking_data->m_bkl_gov_id }}')">取消</button>
@endif

Другой вариант может быть <script src="{{ asset('js/scripts.js') }}"></script> вместо @include директива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...