Laravel如何在视图中访问由控制器传递但在脚本部分内部的值



从请求处理程序,我将一个参数传递给请求视图:

public function sol_solicitante(Request $request, $param){
return view('solicitante.solicitudes', compact('param'));
}

控制器调用的视图是:

@extends('layouts.app')
@section('title','Buzón Solicitudes')
@section('css')
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.css">
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/dataTables.bootstrap4.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/responsive/2.2.6/css/responsive.bootstrap4.min.css">
@endsection
@section('content')
<div class="container mt-4">  
<div>
<h2>Buzón De Solicitudes</h2>  
</div>
<div class="card">
<div class="card-body">

<!--
<a href="crear">
<button type="button" class="btn btn-success float-right">Crear Solicitud</button>
</a>
</h2>
-->
<table class="table table-hover" id="buzonsolicitudes">
<thead>
<tr>
<th scope="col">Id</th>
<th scope="col">Nombre</th>
<th scope="col">Estado</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>                    
</table>            
</div>
</div>
</div>
@endsection
@section('js')

<script src="https://code.jquery.com/jquery-3.5.1.js"></script>    
<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.22/js/dataTables.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.2.6/js/dataTables.responsive.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.2.6/js/responsive.bootstrap4.min.js"></script>
<script>   

$('#buzonsolicitudes').DataTable({
"ajax": "{{ route('datatable.sol_solicitante',['param' => '1'])}}",
"columns":[
{data:'id'},
{data:'nombre'},
{data:'estadologico'},
{data:'btn'}
],
responsive: true,
autoWidth: false,
"language": {
"lengthMenu": "Mostrar " + 
`<select class="custom-select" custom-select-sm form-control form-control-sm>
<option value='10'>10</option>
<option value='25'>25</option>
<option value='50'>50</option>
<option value='100'>100</option>
<option value='-1'>Todos</option>
</select>` +
" registros por página",            
"zeroRecords": "Nada encontrado - disculpa",
"info": "Mostrando página _PAGE_ de _PAGES_",
"infoEmpty": "Ningún registro disponible",
"infoFiltered": "(filtrado de _MAX_ registros totales)",
'search':'Buscar',
'paginate':{
'next':'siguiente',
'previous':'anterior'
}
}
});
</script>
@endsection

我不知道如何在视图中访问控制器发送的参数,因为我必须将其作为参数传递给Ajax调用;类似于:

<script>   
var p= param
$('#buzonsolicitudes').DataTable({
"ajax": "{{ route('datatable.sol_solicitante',['param' => p])}}",

我放的这个不起作用,检查我没有发现它应该是什么样子。

我感谢大家的帮助,谢谢。

php代码在服务器上处理。刀片在页面加载之前编译所有变量。看起来你已经在使用路由助手了。只需像在其他地方那样将变量传递给辅助对象。

"ajax": "{{ route('datatable.sol_solicitante', ['param' => $param]) }}"

这将生成您在web.php文件中定义的路线,如mysite.com/datatable/sol_solicitante/param_value

您应该在blade文件中创建一个脚本。在该脚本中,您添加init一些变量,这些变量的值来自控制器

将其添加到您的脚本中

var data ={!! $data->id !!};  //data->id is variable send by controller

您可以在脚本中直接访问此变量

试试这个希望它能起作用

最新更新