我正在尝试完善所有活动课程,这就是我尝试过的。
中间件称为状态
public function handle($request, Closure $next)
{
$status = $request->status();
if($status == 'active'){
return view('admin.courses.index');
}
return $next($request);
}
我的路线叫中间件
Route::get('admin/courses/?active', 'Admin\CoursesController@index')->middleware('status');
我的视图有一个调用路线的按钮
<a href="{{ route('admin.courses.index') }}" style="margin-left:10px;" class="btn btn-success">
Active <span class="badge badge-light">{{$course_count_active}}</span>
<span class="sr-only">total courses</span></a>
此代码未过滤记录,我不确定自己在做什么错
答案 0 :(得分:0)
首先,提供参数的正确语法是{parameter?}
现在第二个问题是问您是否在kernel.php
文件中注册了中间件(我想您已经注册了,但是仍然需要确认)
现在您的按钮未提供要路由的参数
{{ route('admin.courses.index') }}
这意味着您的中间件将运行$next($request)
因此,如果您需要查看视图部分(您所说的过滤器),请像{{ route('admin.courses.index',['status'=>'active']) }}
现在最后一次给出命名路由,如果您不给出命名路由,那么您将无法呼叫route()
,像下面这样命名路由
Route::get('admin/courses/{status?}', 'Admin\CoursesController@index')->name('admin.courses.index')->middleware('status');
并像上面一样给参数名称status
更新
另一个错误是您无法像以前那样获取参数。
$status = $request->status();
只需在下面写下
$status = $request->status;
更新
所以现在您遇到错误setCooking on member function
,因为您return view('someview')
形成了中间件,这根本不是一个好习惯。
使用redirect()
进行路由。
因此,我建议您选择一条返回视图的路线。
并从中间件重定向到此路由将解决您的问题。
答案 1 :(得分:0)
2天后,我意识到我缺少csfr令牌。这是我所做的修改,现在可以使用。
表格-刀片
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
在Ajax脚本中:
$.ajax({
url: url,
method: method,
data: {
"_token": $('#token').val(),
'item':$('#item').val(),
"description": $('#description').val(),
},
success: function(response) {
},
error: function(xhr) {
var error = xhr.responseJSON;
if ($.isEmptyObject(error) == false) {
$.each(error.errors, function(key, value) {
$('#' + key)
.closest('.form-group')
.addClass('has-error')
.append('<span class="help-block"><strong>' + value + '</strong></span>')
});
}
}