user4815703
user4815703

Reputation:

Post Data not working correctly Laravel

I have a Route as below that will display a profile depending on the data in the url:

Route::get('/{region}/{summonername}', function () {
    return 'Summoner Profile';
});

I have a Form on the Home page which consists of a Input Box and Region Selector. I am posting this data to:

Route::post('/summoner/data');

The problem is that i don't know how i can convert the form data eg. Summoner Name and Region into the url format where the user will be displayed with the profile page and the url would be /{region}/{summonername}. Am i supposed to use a Redirect::to inside my controller? I feel like that is a crappy way of doing it. Any Suggestions?

Right now when i post the data the url displays as '/summoner/data'.

I hope this makes sense, let me know if you need more clarification.

Upvotes: 2

Views: 1105

Answers (3)

Sunil
Sunil

Reputation: 1176

Routes :

Route::post('/summoner/data','ControllerName@FunctionName');

Route::get('/{region}/{summonername}', function () {
return view('SummonerProfile');
});

Controller:

public function FunctionName()
{
 $SummonerName = Input::get('SummonerName');
 $Region = Input::get('Region');
 return Redirect::to('/{$Region}/{$SummonerName}');
}

Hope this will work. Try it!

Using Routes:

Route::post('/summoner/data',function () {
 $SummonerName = Input::get('SummonerName');
 $Region = Input::get('Region');
 return Redirect::to('/{'.$Region.'}/{'.$SummonerName.'}'); 
});

Route::get('/{region}/{summonername}', function () {
return view('SummonerProfile');
});

Upvotes: 1

Haseena P A
Haseena P A

Reputation: 17416

If you want to take the data from URL, just do the following

use Illuminate\Http\Request;
Route::post('/summoner/data', function (Request $request) {
    echo $request->segment(1); // gives summoner
    echo $request->segment(2); // gives data
});

Upvotes: 0

user2094178
user2094178

Reputation: 9464

Yes, you will need to redirect:

Route::post('/summoner/data', function (Request $request) {
    return redirect()->url($request->region .'/'. $request->summonername);
});

Upvotes: 1

Related Questions