Получить параметр URL для аутентификации контроллера входа в Laravel

Я пытаюсь получить url param этого

http://localhost:8000/login?merchId=ABC&param1=abc123&param2=abc123

Эти параметры отправляются с другого сайта всякий раз, когда они перенаправляются на мою страницу входа, и страница входа моего проекта должна получить все эти параметры и выполнить некоторую логическую задачу в моем контроллере.

Как указано выше, мне нужно получить значение ff:

merchId, param1 and param2

В php native я могу просто использовать этот код только для получения этих параметров

используя это:

$merchId = $_GET['merchId'];
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];

Но есть и другой способ сделать это.

В настоящее время мой логин для моего проекта, который я использую, Auth

Вот мой LoginController.php, где я хочу использовать и получить параметры URL-адреса и выполнить некоторые действия.

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected function authenticated(Request $request, User $user){
        if($user->is_admin == 1){
            return  redirect('/admin/view/all');
        }
        else{
            return redirect('/reseller/reservation/view');
        }
    }


    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}

Вот мой маршрут

Route::get('/','HomeController@index');
Route::group(['middleware'=> ['auth']], function(){
    Route::get('/reseller/reservation/view','ResellerController@reservation');
    Other routes included here no need to show......
});

Вот мой HomeController

public function __construct()
{
    $this->middleware('auth');
}

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Contracts\Support\Renderable
 */
public function index()
{   

    $searched = 0;
    $reseller = User::orderBy('created_at', 'desc')
    ->where('is_blocked', '0')  
    ->where('is_admin', '0')          
    ->paginate(20);
    return view('pages.admin.view', compact('reseller', 'searched'));    
}

public function admin(Request $req){
    return view('middleware')->withMessage("Admin");
}

person King RG    schedule 30.07.2019    source источник


Ответы (2)


Получение входных данных из строки запроса

В то время как метод ввода извлекает значения из всей полезной нагрузки запроса (включая строку запроса), метод запроса извлекает значения только из строки запроса:

$name = $request->query('name');

Если запрошенные данные значения строки запроса отсутствуют, будет возвращен второй аргумент этого метода:

$name = $request->query('name', 'Helen');

Вы можете вызвать метод запроса без каких-либо аргументов, чтобы получить все значения строки запроса в виде ассоциативного массива:

$query = $request->query();

Документация

person Douwe de Haan    schedule 30.07.2019
comment
Привет, я тоже попробовал это с моим LoginController и поставил, если get работает правильно, но ничего не происходит $name = $request->query('name'); return redirect('/reseller/reservation/view?cust='.$name); Перенаправление работает нормально, но параметр cust не имеет значения, так как я пытался поместить в него `$ name. есть ли проблемы с этим кодом? - person King RG; 30.07.2019
comment
@KingRG Нет, этот код должен работать, если только запрос не пуст. Эти примеры взяты прямо из документации и будут работать. Если это не так, его не должно быть в этой части. - person Douwe de Haan; 30.07.2019
comment
Хм, я думаю, что LoginController не получил значение параметров URL. - person King RG; 30.07.2019
comment
Сбросьте $request, чтобы увидеть, что он получил, вот где я бы начал отладку. - person Douwe de Haan; 30.07.2019
comment
Когда я попробовал второй аргумент в вашем ответе, где, если запрошенное значение строки запроса отсутствует, helen будет заменено новым значением. и когда я примеряю свою, появляется Хелен. Контроллер не распознает или не получает name и его значение - person King RG; 30.07.2019
comment
@KingRG, если этот http://localhost:8000/login?merchId=ABC&param1=abc123&param2=abc123 является вашим URL-адресом, вам следует работать с $request->query('merchId)', потому что похоже, что ваш URL-адрес не имеет параметра с именем name. - person Douwe de Haan; 30.07.2019
comment
Да, я заменил, имя как param1 все еще не дает мне никакой ценности. просто неправильное объяснение - person King RG; 30.07.2019
comment
Давайте продолжим обсуждение в чате. - person Douwe de Haan; 30.07.2019

Я думаю, я нашел свое решение ..

В моем login.blade.php

Я попытался получить параметры URL-адреса, используя этот код

 if(isset($_GET['merchId'])){
 $merchId = $_GET['merchId'];
 }else{
 $merchId = "none";
 }

и поместите скрытое текстовое поле, содержащее значение merchId внутри моего Form Action

что-то типа

   <input type="text" name="merchId" value="<?= $merchId ?>" >

и в моем LoginController.php я поместил этот код, чтобы показать, получает ли контроллер запрос от login.blade.php

Внутри protected function authenticated(Request $request, User $user)

   return $request->all();

и это оказывается вот так

    {"_token":"2UvDCxls3WY27h8GpEJTJ8oZytfl1LmkseIU0hWY","merchId":"22","email":"[email protected]","password":"mycrush"}

Я знаю, что это не очень хорошая практика, но все же не стесняйтесь отвечать или комментировать этот вопрос, если у вас есть лучший ответ на эту проблему.

person King RG    schedule 31.07.2019