I want to define a route with a parameter that will contain a slash /
character like so example.com/view/abc/02
where abc/02
is the parameter.
How can I prevent Laravel from reading the slash as a separator for the next route parameter? Because of that I’m getting a 404 not found error
now.
Advertisement
Answer
Add the below catch-all route to the bottom of your routes.php
and remember to run composer dump-autoload
afterwards. Notice the use of “->where” that specifies the possible content of params, enabling you to use a param containing a slash.
JavaScript
x
//routes.php
Route::get('view/{slashData?}', 'ExampleController@getData')
->where('slashData', '(.*)');
And than in your controller you just handle the data as you’d normally do (like it didnt contain the slash).
JavaScript
//controller
class ExampleController extends BaseController {
public function getData($slashData = null)
{
if($slashData)
{
//do stuff
}
}
}
This should work for you.
Additionally, here you have detailed Laravel docs on route parameters: [ docs ]