如何修复 laravel 404 NotFoundHttpException 错误?
How to fix laravel 404 NotFoundHttpException Error?
我正在使用这个名为 yajra datables 的 laravel 包为我的应用创建数据 table。但是每当我重新加载页面时,我都会收到此错误。重新加载几次后,table 被加载。但是,每次我使用搜索选项时,页面都会向我抛出 ajax 错误。
我在互联网上搜索了所有可能的解决方案,但 none 似乎可行。
下面是我的代码:
Index.blade
<script>
$(document).ready(function(){
$('#jobsTable').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('activity.index') }}",
dom: "B" + /* Buttons */
"<'row'<'col-sm-12 col-md-6'l>" + /* Length changing input control */
"<'col-sm-12 col-md-6'f>>" + /* Filtering Input */
"<'row'<'col-sm-12'tr>>" + /* The Table! + Processing Display Element*/
"<'row'<'col-sm-12 col-md-5'i>" + /* Table Information Summary */
"<'col-sm-12 col-md-7'p>>" , /* Pagination Control*/
columns:[
/* 1 */ {data: 'id' , name: 'id', visible: false },
/* 0 */ {data: 'action', name: 'action', orderable: false, searchable: false },
/* 1 */ {data: 'job_id' , name: 'job_id' },
/* 2 */ {data: 'type' , name: 'type' },
/* 3 */ {data: 'job_no' , name: 'job_no' },
/* 4 */ {data: 'deal_no' , name: 'deal_no' },
/* 5 */ {data: 'cyc_no' , name: 'cyc_no' },
/* 6 */ {data: 'deal_name' , name: 'deal_name' },
控制器
public function index()
{
if (request()->ajax()) {
$jobs = Job::all();
return DataTables::of($jobs)
->addColumn('action', function ($jobs) {
$button = '<div class="btn-group btn-group-xs">';
$button .= '<a href="/activity/' . $jobs->id . '/edit" class="btn btn-primary btn-xs"><i class="fa fa-edit fa-fw"></i> Edit</a>';
$button .= '<button type="button" name="deleteButton" id="' . $jobs->id . '" data-jobcycid="' . $jobs->job_no . ' | ' . $jobs->cyc_no . '" class="btn btn-danger btn-xs deleteButton"><i class="fas fa-trash-alt"></i> Delete</button>';
$button .= '</div>';
return $button;
})
->rawColumns(['action'])
->setRowID(function ($jobs) {
return $jobs->id;
})
->make(true);
}
return view('activity.index');
}
路线
Route::group(['middleware' => ['auth.roles']], function () {
/*Side bar menu Routes*/
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/dashboard', 'HomeController@dashb')->name('dashboard');
Route::get('/profile', 'HomeController@profile')->name('profile');
/*Activity Routes*/
Route::resource('/activity', 'JobController');
// Route::get('/activity', 'JobController@getIndex')->name('activity.index');
/*Activity Sub Routes*/
Route::get('/jobEditCancel', 'JobController@jobEditCancel')->name('jobEditCancel');
Route::get('/jobAddCancel', 'JobController@jobAddCancel')->name('jobAddCancel');
// Route::get('/activity', 'JobController@index')->name('activity.index');
// Route::delete('/activity/destroy/{id}', 'JobController@destroy')->name('activity.destroy');
/*FPBlog Routes*/
Route::resource('fpblog', 'PostController');
Route::get('/postEditCancel', 'PostController@postEditCancel')->name('postEditCancel');
Route::get('/blogManager', 'PostController@blogManager')->name('blogManager');
});
您正在使用 url: "{{ route('activity.index') }}"
,但您在路由文件中注释了别名。
您可以像这样为资源路由设置别名
/*Activity Routes*/
Route::resource('activity', 'JobController', [
'names' => [
'index' => 'activity.index',
'create' => 'activity.create',
'store' => 'activity.store',
'show' => 'activity.show',
'edit' => 'activity.edit',
'update' => 'activity.update',
'destroy' => 'activity.destoy'
],
]);
这应该适用于您在 blade.
中使用别名 activity.index
的情况
为什么没有 resource
你会过得更好?这主要是一种观点。
当你自己声明每条路线时,你对路线有更多的控制权:
- 每个路由可能的中间件
- 无需检查控制器即可清楚哪条路线有效
- 根据需要命名 methods/routes
- ...等等
感谢每一位尽心尽力支持我解决这个问题的人。然而,经过这么多次的寻找答案,我已经想通了。
显然我的 URI 太长了。在将我的开发环境移动到 laravel Homestead 后,我能够理解这一点。
我已按照此博客中的步骤缩短 url。它解决了所有问题:
再次感谢所有提供意见的人。我希望这篇文章 post 对尝试创建列数较多的数据表的人有用。
我正在使用这个名为 yajra datables 的 laravel 包为我的应用创建数据 table。但是每当我重新加载页面时,我都会收到此错误。重新加载几次后,table 被加载。但是,每次我使用搜索选项时,页面都会向我抛出 ajax 错误。
我在互联网上搜索了所有可能的解决方案,但 none 似乎可行。
下面是我的代码:
Index.blade
<script>
$(document).ready(function(){
$('#jobsTable').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('activity.index') }}",
dom: "B" + /* Buttons */
"<'row'<'col-sm-12 col-md-6'l>" + /* Length changing input control */
"<'col-sm-12 col-md-6'f>>" + /* Filtering Input */
"<'row'<'col-sm-12'tr>>" + /* The Table! + Processing Display Element*/
"<'row'<'col-sm-12 col-md-5'i>" + /* Table Information Summary */
"<'col-sm-12 col-md-7'p>>" , /* Pagination Control*/
columns:[
/* 1 */ {data: 'id' , name: 'id', visible: false },
/* 0 */ {data: 'action', name: 'action', orderable: false, searchable: false },
/* 1 */ {data: 'job_id' , name: 'job_id' },
/* 2 */ {data: 'type' , name: 'type' },
/* 3 */ {data: 'job_no' , name: 'job_no' },
/* 4 */ {data: 'deal_no' , name: 'deal_no' },
/* 5 */ {data: 'cyc_no' , name: 'cyc_no' },
/* 6 */ {data: 'deal_name' , name: 'deal_name' },
控制器
public function index()
{
if (request()->ajax()) {
$jobs = Job::all();
return DataTables::of($jobs)
->addColumn('action', function ($jobs) {
$button = '<div class="btn-group btn-group-xs">';
$button .= '<a href="/activity/' . $jobs->id . '/edit" class="btn btn-primary btn-xs"><i class="fa fa-edit fa-fw"></i> Edit</a>';
$button .= '<button type="button" name="deleteButton" id="' . $jobs->id . '" data-jobcycid="' . $jobs->job_no . ' | ' . $jobs->cyc_no . '" class="btn btn-danger btn-xs deleteButton"><i class="fas fa-trash-alt"></i> Delete</button>';
$button .= '</div>';
return $button;
})
->rawColumns(['action'])
->setRowID(function ($jobs) {
return $jobs->id;
})
->make(true);
}
return view('activity.index');
}
路线
Route::group(['middleware' => ['auth.roles']], function () {
/*Side bar menu Routes*/
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/dashboard', 'HomeController@dashb')->name('dashboard');
Route::get('/profile', 'HomeController@profile')->name('profile');
/*Activity Routes*/
Route::resource('/activity', 'JobController');
// Route::get('/activity', 'JobController@getIndex')->name('activity.index');
/*Activity Sub Routes*/
Route::get('/jobEditCancel', 'JobController@jobEditCancel')->name('jobEditCancel');
Route::get('/jobAddCancel', 'JobController@jobAddCancel')->name('jobAddCancel');
// Route::get('/activity', 'JobController@index')->name('activity.index');
// Route::delete('/activity/destroy/{id}', 'JobController@destroy')->name('activity.destroy');
/*FPBlog Routes*/
Route::resource('fpblog', 'PostController');
Route::get('/postEditCancel', 'PostController@postEditCancel')->name('postEditCancel');
Route::get('/blogManager', 'PostController@blogManager')->name('blogManager');
});
您正在使用 url: "{{ route('activity.index') }}"
,但您在路由文件中注释了别名。
您可以像这样为资源路由设置别名
/*Activity Routes*/
Route::resource('activity', 'JobController', [
'names' => [
'index' => 'activity.index',
'create' => 'activity.create',
'store' => 'activity.store',
'show' => 'activity.show',
'edit' => 'activity.edit',
'update' => 'activity.update',
'destroy' => 'activity.destoy'
],
]);
这应该适用于您在 blade.
中使用别名activity.index
的情况
为什么没有 resource
你会过得更好?这主要是一种观点。
当你自己声明每条路线时,你对路线有更多的控制权:
- 每个路由可能的中间件
- 无需检查控制器即可清楚哪条路线有效
- 根据需要命名 methods/routes
- ...等等
感谢每一位尽心尽力支持我解决这个问题的人。然而,经过这么多次的寻找答案,我已经想通了。
显然我的 URI 太长了。在将我的开发环境移动到 laravel Homestead 后,我能够理解这一点。
我已按照此博客中的步骤缩短 url。它解决了所有问题:
再次感谢所有提供意见的人。我希望这篇文章 post 对尝试创建列数较多的数据表的人有用。