Module Routes file is the place to defined all the routes for your module. Once you Register your Route file in routes/web.php
. Inside your Route file you can use a Clouser if you want like shown below
Route::get('hello-world', function() {
return "Hello World";
});
// Or you can simply use a view() helper method to pass and view file
Route::get('hello-world', function() {
return view('avored-ecommerce::hello.index');
});
// Or you can simply use different Request method too.
Route::post('auth', 'LoginController@login')->name('admin.login.post');
Route::put('product', 'ProductController@index')->name('admin.product.index');
Route::delete('category', 'CategoryController@destroy')->name('admin.category.destroy');
You can specify an Parameter in route url like below
// Show Profile update form
Route::get('user/{id}', 'UserController@editProfile')->name('admin.user.edit');
//Below route is the one where you can pass user if and if it doesn't exist then you can use Logged In User
Route::put('user/{id?}', 'UserController@updateProfile')->name('admin.user.update');
When it comes to using an route we always prefer to name
all the routes so when you want to use the route into any of your PHP files you can simple use route
helper function
// Router with out argument
route('admin.login'); / yoursite.com/admin/login
// Router with argument
route('admin.user.edit',$user->id); // yoursite.com/admin/user/edit/2
// route with pagination argument
route('admin.product.index',['page' => 2]); // yoursite.com/admin/product?page=2
Route groups allow you to share route attributes, such as middleware or namespaces, prefix across a large number of routes without needing to define those attributes on each individual route.
To assign middleware to all routes within a group, you may use the middleware method before defining the group.Let say you want group of routes to be authenticated you can simply do it with front.auth
like below:
Route::middleware('front.auth')->group(function() {
Route::get('my-account', 'MyAccountController@index')->name('user.my-account.index');
Route::post('my-account', 'MyAccountController@store')->name('user.my-account.store');
});
//If you want to pass multiple Middleware simply use an array
Route::middleware(['web','front.auth'])->group(function() {
Route::get('my-account', 'MyAccountController@index')->name('user.my-account.index');
Route::post('my-account', 'MyAccountController@store')->name('user.my-account.store');
});
Another common use-case for route groups is assigning the same PHP namespace to a group of controllers using the namespace method:
Route::->namespace('AvoRed\Ecommerce\Http\Controllers\Admin')->group(function() {
Route::get('admin/product', 'ProductController@index')->name('admin.product.index');
Route::post('admin/product', 'ProductController@store')->name('admin.product.store');
});
The prefix method may be used to prefix each route in the group with a given URI. For example, you may want to prefix all route URIs within the group with admin:
Route::->prefix('admin')->group(function() {
// Above uri example we don't use `admin/` in this case
Route::get('product', 'ProductController@index')->name('admin.product.index');
Route::post('product', 'ProductController@store')->name('admin.product.store');
});
The name method may be used to prefix each route name in the group with a given string. For example, you may want to prefix all of the grouped route's names with admin:
Route::->name('admin.')
->prefix('admin')->group(function() {
// Above uri example we don't use `admin` in this case
Route::get('product', 'ProductController@index')->name('product.index');
Route::post('product', 'ProductController@store')->name('product.store');
});