我有一个问题,只能渲染一个部分。
我的默认刀片是
<!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;
为什么?
哇,我发现我看不到渲染的HTML,因为我取消了html表,所以它没有找到body,事实上,这段代码是
success:function(data){
$('tbody').html(data);
}
现在我把这个代替
success:function(data){
$('main').replaceWith(data);
}
但为什么我必须使用replaceWith呢? 一个正确的解决方案是什么?我想,当我在控制器中使用RenderSection时,如果没有任何地方是节的存在的意思,那么在HTML的特定部分,所有的渲染都是自动的,而无需重新发送html......我错了吗?