我正在尝试从操作中获取信息,但是单击时只是刷新页面,在控制台中我得到的代码是302并停留在当前页面上。
我在这里阅读了很多类似的主题,但没有发现任何问题。
我正在尝试执行http://laravel2.lo/getUserChannels?user_id=2
Laravel 5.7.16
路线:
Auth::routes();
Route::group(['middleware' => ['auth']], function () {
Route::view('createUser', 'createuser');
Route::view('createChannel', 'createchannel');
Route::view('joinChannel', 'joinchannel');
Route::get('profile', 'UserController@profile');
Route::get('users', 'UserController@users');
Route::get('getChannelUsers', 'UserController@getChannelUsers');
Route::get('getUserChannels', 'ChannelController@getUserChannels');
});
ChannelController:
class ChannelController extends Controller
{
public function getUserChannels(Request $request)
{
$this->validate($request, [
'user_id' => 'required|integer',
]);
/** @var User $user */
$user = User::find($request->user_id);
return view('singleuser', ['channels' => $user->channels, 'username' => $user->name]);
}
}
在日志文件中没有错误。
感谢您的帮助和建议。
答案 0 :(得分:0)
除了字符串之外,我认为您不会收到查询参数,因此您的整数验证失败。
要改善错误处理能力,您可以自定义App\Exceptions\Handler
,用ValidationException
或get_class()
之类的东西捕获instanceOf
错误,然后在其中做一些整洁的事情
当然,您完全不能通过使用Route::get('getUserChannels/{id}', 'controller@show');
并访问它/ getUserChannels / 2来使用查询参数-那么您可能可以将其验证为整数
您可以选择
Route::get('getUserChannels/{id}', ...
public function getUserChannels($id)
{
$user = User::findOrFail($id);
return view('singleuser', [
'channels' => $user->channels,
'username' => $user->name
]);
}
然后,如果找不到字符串,则只会抛出404 ...
答案 1 :(得分:0)
class ChannelController extends Controller
{
public function getUserChannels(Request $request)
{
$validator = \Validator::make($request->all(), ['user_id' => 'required|integer']);
if($validator->fails())
{
$error = $validator->errors()->first();
dd($error);
}
/** @var User $user */
$user = User::find($request->user_id);
return view('singleuser', ['channels' => $user->channels, 'username' => $user->name]);
}
}