Laravel 302重定向问题

时间:2018-12-09 09:47:26

标签: laravel routing routes

我正在尝试从操作中获取信息,但是单击时只是刷新页面,在控制台中我得到的代码是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]);
    }
}

在日志文件中没有错误。

感谢您的帮助和建议。

2 个答案:

答案 0 :(得分:0)

除了字符串之外,我认为您不会收到查询参数,因此您的整数验证失败。

要改善错误处理能力,您可以自定义App\Exceptions\Handler,用ValidationExceptionget_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]);
        }
    }