Как использовать параметр из функции для создания URL? Маршрутизация Laravel

#laravel #routes #controller

#laravel #маршруты #контроллер

Вопрос:

Я отправляю хэшированный URL-адрес, и когда я получаю его, я должен показать представление в Laravel, поэтому у меня есть эти функции на контроллере, а также некоторые маршруты:

Это мои маршруты:

 Route::post('/sendLink', 'PaymentPaymentController@getPaymentLink');
Route::get('/payment?hash={link}', 'PaymentPaymentController@show');
  

И это функции, которые у меня есть на моем контроллере:

  public function getPaymentLink (Request $request){
    $budgetId = $request['url.com/payment/payment?hash'];
    $link = Crypt::decryptString($budgetId);
    Log::debug($link);
    //here to the show view i wanna send the link with the id hashed, thats why i dont call show($link)
    $view = $this->show($budgetId);
}

public function show($link) {
    $config = [
        'base_uri' => config('payment.base_uri'),        ];

    $client = new Client($config);

    $banking_entity = $client->get('url')->getBody()->getContents();
    $array =  json_decode($banking_entity, true);
    return view('payment.payment-data')->with('banking_entity', $array);
}
  

И при этом выдается сообщение об ошибке «Страница не найдена».
Чего я хочу, так это того, что когда я клиент нажимаю на ссылку, я отправляю ему ссылку в этом формате «url.com/payment/payment?hash=fjadshkfjahsdkfhasdkjha «, запускаю функцию getPaymentLink, чтобы я мог получить расшифровку из этого хэша, а также показать ему представление.

Комментарии:

1. Создайте свой маршрут, Route::get('/payments', 'PaymentPaymentController@show'); и по запросу GET он автоматически преобразуется как /payments?hash=hahshgs из контроллера, вы можете перехватить его как $hash = request('hash');

2. Вы хотите сказать, что я должен поместить $ hash = request (‘хэш’) в мою функцию show?

Ответ №1:

нет необходимости ?hash={link} в get route

это параметры запроса, и они будут получены с $request

Нравится:

    $request->hash 

   // or

   $request->get('hash')
  

Комментарии:

1. да, но не забудьте ввести запрос public function show(Request $request)

Ответ №2:

Вам нужно определить маршрут следующим образом:

 Route::get('/payment/{hash}', 'PaymentPaymentController@show');
  

Теперь вы можете просто использовать его в своем методе контроллера, как показано ниже:

 <?php 

 public function getPaymentLink (Request $request,$hash){
    $budgetId = $hash;
    // further code goes here
}