首页 > 解决方案 > 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])}}",

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

我感谢所有帮助,谢谢。

标签: ajaxlaravel

解决方案


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

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

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


推荐阅读