Как передать весь URL как params? - PullRequest
0 голосов
/ 20 июня 2019

Я хочу разрешить пользователю сканировать QR-код и перейти на сайт. Это результаты поиска с параметрами в URL-адресе, например

http://example.com/qr-code/http://example.org/search/user_id=12&model_id=4&role_id=8

Мой маршрут установлен как

Route::get('qr-code/{data?}/{size?}', 'QrController@qrCode')->name('qr-code');

поэтому я надеюсь, что мои $ data получат URL:

http://example.org/search/user_id=12&model_id=4&role_id=8

Мой контроллер имеет

public function qrCode(Request $request, $data = null, $size = 60) {
    dd(88);
    $data = (empty($data)) ? env('APP_URL') : $data;
    return view('qr.code')->with('qr', QrCode::size($size)->generate($data));
} 

Но я даже не вижу перенаправления маршрута dd (88) на главную страницу. Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Дело в том, что Laravel не знает, что вы предоставите полный URL-адрес в качестве параметра.Он мог интерпретировать все так: http://example.com/qr-code/http:/ / search / user_id = 12 & model_id = 4 & role_id = 8.Попробуйте кодировать URL по-разному.Ваши $ данные будут "http: /", а ваш размер будет 60.

0 голосов
/ 20 июня 2019

Хорошо, я взял, я добавил к помощнику

function base64url_encode($s) {
    return str_replace(array('+', '/'), array('-', '_'), base64_encode($s));
}

function base64url_decode($s) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $s));
}

И затем я получаю URI из запроса на просмотр как

<a href="#" data-url="{{ base64url_encode($request->getRequestUri()) }}">Click me</a>

Из JS я посылаю параметры в QrController

public function qrCode(Request $request, $data = null, $type = null, $size = 200) {
    $data = (empty($data)) ? env('APP_URL') : $data;
    if ($type == 'url') $data = env('APP_URL') . base64url_decode($data);

    return view('qr.code')->with('qr', QrCode::size($size)->generate($data));
} 

И отлично работает.Base64 имеет + или / иногда, поэтому нужно заменить и - и _, а во-вторых, я добавляю базовый URL из env, чтобы создать полный адрес.

Thx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...