Laravel:在blade@if中使用Javascript

Laravel:在blade@if中使用Javascript,javascript,php,laravel,if-statement,laravel-blade,Javascript,Php,Laravel,If Statement,Laravel Blade,我在想。不可能将Javascript放入blade@if-right?blade@if是某种形式的php,但在视图中不鼓励使用php代码,对吗?我该怎么办?以下是我试图实现的逻辑。基本上,有什么替代方法来实现我的目标?我试图在三个条件都满足时显示按钮 @if(isToday($one_parking_info->booking_data->m_bkl_end_date) && isBeforeElevenPM() && notEndInT($one_p

我在想。不可能将Javascript放入blade@if-right?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
@if(isToday($one\u parking\u info->booking\u data->m\u bkl\u end\u date)和&isbeforeEventPM()&¬EndInT($one\u parking\u info->booking\u data->m\u plots\u address\u city))
取消
@恩迪夫

您的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
@if(isToday($one\u parking\u info->booking\u data->m\u bkl\u end\u date)和&isbeforeEventPM()&¬EndInT($one\u parking\u info->booking\u data->m\u plots\u address\u city))
@包括('script.js')
取消
@恩迪夫
另一个选项可以是
而不是
@include
指令

我想:

@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>
@if(isToday($one\u parking\u info->booking\u data->m\u bkl\u end\u date)和&isbeforeEventPM()&¬EndInT($one\u parking\u info->booking\u data->m\u plots\u address\u city))
@包括('script.js')
取消
@恩迪夫
$('body')。在('click','btn sm',function()上{
var id=$(this.attr('data-id');
//
取消预订的逻辑
//
})

刀片是php的一种形式,因此所有工作都在服务器上完成。因此,您不能在
@if
表达式中调用javascript函数。相反,您可以在控制器中运行函数并返回一个值,以说明是否应该包含按钮,或者如果您不关心用户是否可以找到并显示按钮,您可以使用javascript来显示或隐藏按钮


类似于控制器中的返回视图(“您的视图”)->(['showButton'=>$shouldShow)和视图中的
@if($shouldShow)
以及您的其他代码

抱歉,您想要实现的目标还不太清楚。可能是您可以添加上面代码中的错误。在讨论之前,我们需要了解的是服务器将执行哪些代码(即@blade,php),以及浏览器将执行哪些代码(javascript).到底是什么问题?您的代码似乎正常?!换句话说,如果
@if
条件的计算结果为真,您将在页面HTML源代码中看到,
..
我试图在满足这三个条件时显示按钮。另一个复杂性是,我有几种此类按钮用于不同的停车信息条目。我我正在尝试确定是否要为每个条目显示按钮。您仍然可以在控制器中执行此操作,并返回更多参数或返回要显示的按钮的数组。@if($showButtons['thisButton'))为了将业务逻辑保存在控制器中,感谢您的洞察力。我想我已经掌握了。使用关联数组通过唯一键来保存布尔值,并在视图中读取它以确定是否显示按钮。