Laravel不显示部分

问题描述 投票:0回答:1

我有一个问题,只能渲染一个部分。

我的默认刀片是

<!doctype html>
<html>
<head>
    @include('includes.head')
</head>
<body>
    @include('includes.header')

    <div class="container-fluid">

        <div class="row">

            @include('includes.sidebar')
            <!-- main content -->
            @yield('content')

        </div>

        <footer class="row">
            @include('includes.footer')
        </footer>

    </div>
</body>
<!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="{{ asset('public/js/jquery-3.5.1.min.js') }}"></script>
    <script src="{{ asset('public/js/vendor/popper.min.js') }}"></script>
    <script src="{{ asset('public/js/bootstrap.min.js') }}"></script>
    <script src="{{ asset('public/js/vendor/holder.min.js') }}"></script>
    <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>

    @yield('script')

</html>

我的页面modify.blade有动态内容部分。

    @extends('layouts.default')
@section('content')

<main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">

  <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pb-2 mb-3 border-bottom">
    <h1 class="h2">Gestione</h1>
    <div class="btn-toolbar mb-2 mb-md-0">
      <div class="btn-group mr-2">
      </div>
      <form class="card p-2" method="GET">
        <div class="input-group">
          <input type="text" class="form-control" placeholder="Numero polizza" id="search">
          <div class="input-group-append">
          <!--<button type="submit" class="btn btn-secondary" id="search">Cerca</button>-->
          </div>
        </div>
      </form>
    </div>
  </div>

  <div class="shadow p-1 mb-4 bg-black" style="zoom:90%">
    <!--<img class="d-block mx-auto mb-4" src="https://getbootstrap.com/docs/4.0/assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
    --><h2></h2>
    <!--<p class="lead">Qua sezione dati cliente ripreso</p>-->

    <form method="POST" action="/rimborsi/save" novalidate>
      {{ csrf_field() }}   

      <div class="row">
        <div class="col-md-3 mb-3">
          <label for="polizza">Numero Polizza <span class="text-muted"></span></label>
          <input type="text" class="form-control @error('polizza') is-invalid @enderror" id="polizza" name="polizza" value="{{ isset($customer) ? $customer->polizza : 'la variabile data e vuota' }}">



          @error('polizza')
            <div class="invalid-feedback">{{ $message }}</div>
          @enderror
        </div>
        <div class="col-md-3 mb-3">
          <label for="contr_nom">Nome Contraente</label>
          <input type="text" class="form-control @error('contr_nom') is-invalid @enderror" id="contr_nom" name="contr_nom" value="{{old('contr_nom')}}">
          @error('contr_nom')
            <div class="invalid-feedback">{{ $message }}</div>
          @enderror
        </div>
        <div class="col-md-3 mb-3">
          <label for="contr_cog">Cognome Contraente</label>
          <input type="text" class="form-control @error('contr_cog') is-invalid @enderror" id="contr_cog"  name="contr_cog" value="{{old('contr_cog')}}">
          @error('contr_cog')
            <div class="invalid-feedback">{{ $message }}</div>
          @enderror
        </div>


      </div>

      @if (session('status'))
      <div class="alert alert-success">
          {{ session('status') }}
      </div>
      @endif
      <hr class="mb-4">
    </form>

  </div>

  <div class="row">
    <div class="col-md-4 order-md-2 mb-4">
      <h4 class="d-flex justify-content-between align-items-center mb-3">
        <span class="text-muted">Lista Dossier</span>
        <span class="badge badge-secondary badge-pill">3</span>
      </h4>
      <ul class="list-group mb-3">
        <li class="list-group-item d-flex justify-content-between lh-condensed">
          <div>
            <h6 class="my-0">I9A123123</h6>
            <small class="text-muted">Data sinistro1</small>
          </div>
          <span class="text-muted">Data sinistro2</span>
        </li>
      </ul>

      <form class="card p-2">
        <div class="input-group">
          <input type="text" class="form-control" placeholder="Dossier">
          <div class="input-group-append">
            <button type="submit" class="btn btn-secondary">Cerca</button>
          </div>
        </div>
      </form>
    </div>

    <div class="col-md-8 order-md-1"><!--Inizio Colonna anagrafica-->
      <h4 class="d-flex justify-content-between align-items-center mb-3">
        <span class="text-muted">Lista prestazioni</span>
        <span class="badge badge-secondary badge-pill"></span>
      </h4>

    </div><!--Fine Colonna anagrafica-->
  </div>


</main>
@stop
@section('script')
<script>
    $(document).ready(function(){
    /*
      var table = $('.data-table').dataTable({
            processing: true,
            serverSide: true,
            ajax: "{{ url("/getRefundsData") }}",
            columns: [
                {data: 'DT_RowIndex', name: 'DT_RowIndex'},
                {data: 'date_ref', name: 'date_ref'},
                {data: 'status_ref', name: 'status_ref'},
                {data: 'action', name: 'action', orderable: false, searchable: false},
            ]
        });
    */  
    $('#search').keydown(function (e) {
      if (e.keyCode == 13) {
      e.preventDefault();
      $value=$(this).val();
        $.ajax({
            type : 'get',
            url : "{{ url("/trova") }}",
            data:{'numero':$value},
            success:function(data){
            $('tbody').html(data);
            }
        });
      }
    });

        $( "#sezione" ).click(function( event ) {
          event.preventDefault();
        });

        $(".add-more").click(function(){ 
          //$('input[name="importo[]"]').prop('disabled', false);
          var html = $(".copy").html();
          $(".after-add-more").before(html);
        });

        $("body").on("click",".remove",function(){ 
          $(this).parents(".control-group").remove();
        });

    });
  </script>
  @stop

最初我显示的是MODIFY PAGE,然后当我通过db字段搜索数据时,表单必须由检索到的数据来填写,为了做到这一点,我需要只渲染部分内容。

如果我在Chrome调试中看到这个请求,我可以看到用数据渲染的正确部分,但我无法在实际页面中看到。 我的控制器的一部分。

$view = view('pages.modify', compact('customer')); // Compact with the text name ('data') sends the variable through
        $sections = $view->renderSections()['content'];
        return $sections;

为什么?

rendering laravel-blade sections
1个回答
0
投票

哇,我发现我看不到渲染的HTML,因为我取消了html表,所以它没有找到body,事实上,这段代码是

success:function(data){
        $('tbody').html(data);
        }

现在我把这个代替

success:function(data){
        $('main').replaceWith(data);
        }

但为什么我必须使用replaceWith呢? 一个正确的解决方案是什么?我想,当我在控制器中使用RenderSection时,如果没有任何地方是节的存在的意思,那么在HTML的特定部分,所有的渲染都是自动的,而无需重新发送html......我错了吗?

© www.soinside.com 2019 - 2024. All rights reserved.