Reputation:
I want to create Users`s shop in my application. Default urls are:
site.com/cars
site.com/parts
If user create own shop urls viewed like this:
site.com/user_name/cars
site.com/user_name/parts
And if user do not create store, parameter {user_name}
is empty and urls viewed like:
site.com//cars
site.com//parts
How can I create routes or middlewares for this?
Thank you.
UPD:
My routes
Route::group(['domain' => 'site.com'], function () {
Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['localeSessionRedirect', 'localizationRedirect', 'maintenance_mode']], function()
{
Route::group(['prefix' => '{store_name?}', 'namespace' => 'UserOnlineShop', 'middleware' => ['online_shop_tarif']], function(){
Route::get('/', ['as' => 'user_store.home', 'uses' => 'HomeController@index']);
Route::get('parts/', ['as' => 'parts.index', 'uses' => 'PartsViewController@all_parts']);
Route::get('catalog/cars_for_parts', ['as' => 'catalog.auto_brands', 'uses' => 'AutoCatalogController@auto_brands']);
});
});
});
Upvotes: 5
Views: 2879
Reputation: 936
I think what your looking for is this:
Route::get('site.com/{user_name?}/cars', function ($user_name = null){
return view
});
The ?
makes the user_name
oprional and the null
is needed and can be any other default value.
For what your asking (using named controllers) you may do it this way. Add this to your route group:
Route::get('site.com/{user_name?}/cars', ['as' => 'site.cars', 'uses' => 'CarController@car_names']);
Then in controller do:
public function car_names($user_name = null){
return view;
}
Source: laravel optional parameters
Upvotes: 1