路由在 laravel 中不起作用
Route is not working in laravel
我在带有数据的索引页面中有一个搜索选项table 当我搜索名称时它会过滤一些细节并显示到 table 当我点击数据中的显示图标时 table ] 它应该重定向到 show.index 页面但它会抛出一个错误 this.but 它在索引页面上工作但不在索引页面内搜索
索引页
@include('theme.header')
<script>
$(document).ready(function () {
$('#search').on('click', function () {
$value = $(this).val();
$.ajax({
type: 'GET',
url: '{{\Illuminate\Support\Facades\URL::to('search')}}',
data: {'search': $value},
success: function (data) {
$('#edpinfo').html(data);
}
})
})
})
</script>
<script>
$.ajaxSetup({headers: {'csrftoken': '{{ csrf_token() }}'}});
</script>
<br>
<div class="row">
<div class="col-12">
<div class="card m-b-30">
<div class="card-body">
<h4 class="mt-0 header-title">Indents</h4>
<input type="text" id="search" class="pull-right form-rounded">
<a href="{{route('edp')}}">
<button class="btn btn-sm btn-primary pull-left">Back</button>
</a>
<label class="pull-right">search</label>
<br>
<br><br>
<table id="datatable" class="table table-bordered table-responsive-lg">
<thead>
<tr>
<th>Slno</th>
<th>Customer Name</th>
<th>Customer Phone Number</th>
<th>DateOfDelivery</th>
<th>Delivery At</th>
<th>Show</th>
</tr>
</thead>
<tbody id="edpinfo">
@foreach($indents as $indent)
<tr>
<td>{{$loop->iteration}}</td>
<td>{{$indent->customer_name}}</td>
<td>{{$indent->phone_no}}</td>
<td>{{$indent->date_of_delivery}}</td>
<td>{{$indent->delivery_at}}</td>
<td><a href="{{route('edp.show',$indent->id)}}"><img src="assets/images/select.jpg"
class="imgsize"></a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@include('theme.footer')
带搜索功能的控制器
public function search(Request $request)
{
if ($request->ajax()) {
$output = "";
$indents = DB::table('indents')
->where('id', 'LIKE', '%' . $request->search . '%')
->orwhere('customer_name', 'LIKE', '%' . $request->search . '%')
->get();
foreach ($indents as $key => $indent) {
$output .= '<tr>' .
'<td>' . $indent->id . '</td>' .
'<td>' . $indent->customer_name . '</td>' .
'<td>' . $indent->phone_no . '</td>' .
'<td>' . $indent->date_of_delivery . '</td>' .
'<td>' . $indent->delivery_at . '</td>' .
'<td>'.'.<a href="{{route(\'edp.show\',$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
'</tr>';
}
return Response($output);
}
}
路由文件
Route::get('edp', 'EdpController@index')->name('edp');
Route::get('edp/cancel/{id}', 'EdpController@cancel')->name('edp.cancel');
Route::get('search', 'EdpController@search')->name('search');
具体问题出在控制器的搜索功能路由上
'<td>'.'.<a href="{{route(\'edp.show\',$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
试试这个:
'<td>'.'.<a href="'.route('edp.show',$indent->id).'">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
这是因为您在控制器中使用 {{ }} 为您的 table 生成 html 并且当您将 html 设置为您的 table使用脚本,php 代码永远不会在您的脚本中通过 ajax 在客户端处理,因为页面已经加载。
如果您检查您的 url 锚标记不正确。我认为你需要改变
'<td>'.'.<a href="{{route(\'edp.show\',$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
到
'<td>'.'.<a href="'.route('edp.show',$indent->id).'">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
另外我认为没有名称路由edp.show,那也应该是路由('edp',$indent->id)
将 href 中的路由替换为 url。
'<td>'.'.<a href="{{url(\'edp.show\'.$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
试试这个
我在带有数据的索引页面中有一个搜索选项table 当我搜索名称时它会过滤一些细节并显示到 table 当我点击数据中的显示图标时 table ] 它应该重定向到 show.index 页面但它会抛出一个错误 this.but 它在索引页面上工作但不在索引页面内搜索
索引页
@include('theme.header')
<script>
$(document).ready(function () {
$('#search').on('click', function () {
$value = $(this).val();
$.ajax({
type: 'GET',
url: '{{\Illuminate\Support\Facades\URL::to('search')}}',
data: {'search': $value},
success: function (data) {
$('#edpinfo').html(data);
}
})
})
})
</script>
<script>
$.ajaxSetup({headers: {'csrftoken': '{{ csrf_token() }}'}});
</script>
<br>
<div class="row">
<div class="col-12">
<div class="card m-b-30">
<div class="card-body">
<h4 class="mt-0 header-title">Indents</h4>
<input type="text" id="search" class="pull-right form-rounded">
<a href="{{route('edp')}}">
<button class="btn btn-sm btn-primary pull-left">Back</button>
</a>
<label class="pull-right">search</label>
<br>
<br><br>
<table id="datatable" class="table table-bordered table-responsive-lg">
<thead>
<tr>
<th>Slno</th>
<th>Customer Name</th>
<th>Customer Phone Number</th>
<th>DateOfDelivery</th>
<th>Delivery At</th>
<th>Show</th>
</tr>
</thead>
<tbody id="edpinfo">
@foreach($indents as $indent)
<tr>
<td>{{$loop->iteration}}</td>
<td>{{$indent->customer_name}}</td>
<td>{{$indent->phone_no}}</td>
<td>{{$indent->date_of_delivery}}</td>
<td>{{$indent->delivery_at}}</td>
<td><a href="{{route('edp.show',$indent->id)}}"><img src="assets/images/select.jpg"
class="imgsize"></a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
@include('theme.footer')
带搜索功能的控制器
public function search(Request $request)
{
if ($request->ajax()) {
$output = "";
$indents = DB::table('indents')
->where('id', 'LIKE', '%' . $request->search . '%')
->orwhere('customer_name', 'LIKE', '%' . $request->search . '%')
->get();
foreach ($indents as $key => $indent) {
$output .= '<tr>' .
'<td>' . $indent->id . '</td>' .
'<td>' . $indent->customer_name . '</td>' .
'<td>' . $indent->phone_no . '</td>' .
'<td>' . $indent->date_of_delivery . '</td>' .
'<td>' . $indent->delivery_at . '</td>' .
'<td>'.'.<a href="{{route(\'edp.show\',$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
'</tr>';
}
return Response($output);
}
}
路由文件
Route::get('edp', 'EdpController@index')->name('edp');
Route::get('edp/cancel/{id}', 'EdpController@cancel')->name('edp.cancel');
Route::get('search', 'EdpController@search')->name('search');
具体问题出在控制器的搜索功能路由上
'<td>'.'.<a href="{{route(\'edp.show\',$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
试试这个:
'<td>'.'.<a href="'.route('edp.show',$indent->id).'">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
这是因为您在控制器中使用 {{ }} 为您的 table 生成 html 并且当您将 html 设置为您的 table使用脚本,php 代码永远不会在您的脚本中通过 ajax 在客户端处理,因为页面已经加载。
如果您检查您的 url 锚标记不正确。我认为你需要改变
'<td>'.'.<a href="{{route(\'edp.show\',$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
到
'<td>'.'.<a href="'.route('edp.show',$indent->id).'">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
另外我认为没有名称路由edp.show,那也应该是路由('edp',$indent->id)
将 href 中的路由替换为 url。
'<td>'.'.<a href="{{url(\'edp.show\'.$indent->id)}}">.'.'<img src="assets/images/select.jpg" class="imgsize">.'.'</a>.'.'</td>'.
试试这个