Laravel 302 проблема перенаправления - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь получить информацию от действия, но когда нажимаю, просто обновляю страницу, и в консоли я получаю код 302. Я остаюсь на текущей странице.

Я прочитал много похожих тем здесь, но ничего не нашел.

Я пытаюсь выполнить http://laravel2.lo/getUserChannels?user_id=2

Laravel 5.7.16

route:

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 голосов
/ 09 декабря 2018
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]);
        }
    }
0 голосов
/ 09 декабря 2018

Я не думаю, что вы получите параметры запроса как что-либо кроме строк, поэтому ваша целочисленная проверка не пройдена.

Чтобы улучшить обработку ошибок, вы можете настроить 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, если строка не найдена и т.д....

...