Is it possible to set a global language prefix to every url:
Currently php artisan route:list --compact gives
+----------+----------------------------------+-..
| Method | URI | Action..
+----------+----------------------------------+-..
| GET|HEAD | api/user | Closur..
| GET|HEAD | forgot-password | Laravel\Fortify\Htt...
| POST | forgot-password | Lara..
| GET|HEAD | livewire/livewire.js | Livewire\..
..
| GET|HEAD | login | Lara..
| GET|HEAD | sanctum/csrf-cookie | Lar..
| POST | two-factor-challenge | L..
| POST | user/confirm-password | Lar..
| GET|HEAD | user/confirm-password | La..
..
| POST | user/two-factor-recovery-codes | Lar..
+----------+----------------------------------+-..
but i want to (if e.g english and spain language)
+----------+----------------------------------+-..
| Method | URI | Action..
+----------+----------------------------------+-..
| GET|HEAD | en/api/user | Closur..
| GET|HEAD | en/forgot-password | Laravel\Fortify\Htt...
| POST | en/forgot-password | Lara..
| GET|HEAD | en/livewire/livewire.js | Livewire\..
..
| GET|HEAD | en/login | Lara..
| GET|HEAD | en/sanctum/csrf-cookie | Lar..
| POST | en/two-factor-challenge | L..
| POST | en/user/confirm-password | Lar..
| GET|HEAD | en/user/confirm-password | La..
..
| POST | en/user/two-factor-recovery-codes | Lar..
....the same in spain:
| GET|HEAD | es/api/user | Closur..
| GET|HEAD | es/forgot-password | Laravel\Fortify\Htt...
...
That which language is active correspondingly.
In a web.php i try to
foreach (['en', 'es'] as $k) {
//echo (substr(url()->current(), strlen(url('/')) + 1, 2) == $k);
Route::prefix($k)->group(function () use ($k) {
Route::get('/', fn () => view('welcome'))->name("{$k}_home");
});
}
Route::get('/', function () {
return Redirect::route('es_home');
});
Thank you.
Route::group([ 'prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}'],'middleware' => 'setlocale']);
I am having problems getting some routes to work. I have clearly declared some routes that just don't show up in php artisan route:list, even after clearing the cache.
Since I think this may be related to another line not being correct, I have pasted the entire routes file here. All the admin routes are working, but some "pro" and some "shop" routes are missing completely! There are several missing, so I will not list them all. I am out of thoughts as to how this is happening.
Auth::routes();
Route::prefix('cms')->middleware(['role:admin'])->namespace('Admin')->name('cms.admin.')->group(function () {
Route::get('', 'CmsController#index')->name('index');
Route::get('instellingen', 'CmsController#getSetting')->name('setting.get');
Route::match(['put', 'patch'], 'instellingen', 'CmsController#updateSetting')->name('setting.update');
Route::resource('coaches', 'ProController')->names('pro');
Route::resource('winkels', 'ShopController')->names('shop');
Route::resource('adviezen', 'AdviceController')->names('advice');
Route::resource('notificaties', 'NotificationController')->names('notification');
});
Route::prefix('account')->name('account.')->group(function () {
Route::middleware(['role:shop'])->namespace('Shop')->name('shop.')->group(function () {
Route::get('', 'AccountController#index')->name('index');
Route::get('instellingen', 'AccountController#getSetting')->name('setting.get');
Route::match(['put', 'patch'], 'instellingen', 'AccountController#postSetting')->name('setting.post');
Route::get('profiel', 'AccountController#getProfile')->name('profile.get');
Route::match(['put', 'patch'], 'profiel', 'AccountController#postProfile')->name('profile.post');
Route::get('coaches', 'AccountController#getPro')->name('pro.get');
Route::match(['put', 'patch'], 'coaches', 'AccountController#postPro')->name('pro.post');
Route::resource('adviezen', 'AdviceController')->names('advice');
});
Route::middleware(['role:pro'])->namespace('Pro')->name('pro.')->group(function () {
Route::get('', 'AccountController#index')->name('index');
Route::get('profiel', 'AccountController#getProfile')->name('profile.get');
Route::match(['put', 'patch', 'delete'], 'profiel', 'AccountController#postProfile')->name('profile.post');
Route::get('winkel', 'AccountController#getShop')->name('shop.get');
Route::match(['post', 'delete'], 'winkel', 'AccountController#postShop')->name('shop.post');
Route::get('postvak', 'AccountController#getNotification')->name('notification.get');
Route::post('postvak', 'AccountController#postNotification')->name('notification.post');
Route::resource('adviezen', 'AdviceController')->names('advice');
});
});
Route::get('', 'SiteController#index')->name('site.index');
Result when printing the php artisan route:list -c (Yes, I know this is quite a lot of text, but I think it is necessary to see the complete picture and might help in the solving of this particular problem)
+------------------+------------------------------------+------------------------------------------------------------------------+
| Method | URI | Action |
+------------------+------------------------------------+------------------------------------------------------------------------+
| GET|HEAD | / | App\Http\Controllers\SiteController#index |
| GET|HEAD | _debugbar/assets/javascript | Barryvdh\Debugbar\Controllers\AssetController#js |
| GET|HEAD | _debugbar/assets/stylesheets | Barryvdh\Debugbar\Controllers\AssetController#css |
| DELETE | _debugbar/cache/{key}/{tags?} | Barryvdh\Debugbar\Controllers\CacheController#delete |
| GET|HEAD | _debugbar/clockwork/{id} | Barryvdh\Debugbar\Controllers\OpenHandlerController#clockwork |
| GET|HEAD | _debugbar/open | Barryvdh\Debugbar\Controllers\OpenHandlerController#handle |
| GET|HEAD | _debugbar/telescope/{id} | Barryvdh\Debugbar\Controllers\TelescopeController#show |
| GET|HEAD | account | App\Http\Controllers\Pro\AccountController#index |
| POST | account/adviezen | App\Http\Controllers\Pro\AdviceController#store |
| GET|HEAD | account/adviezen | App\Http\Controllers\Pro\AdviceController#index |
| GET|HEAD | account/adviezen/create | App\Http\Controllers\Pro\AdviceController#create |
| PUT|PATCH | account/adviezen/{adviezen} | App\Http\Controllers\Pro\AdviceController#update |
| GET|HEAD | account/adviezen/{adviezen} | App\Http\Controllers\Pro\AdviceController#show |
| DELETE | account/adviezen/{adviezen} | App\Http\Controllers\Pro\AdviceController#destroy |
| GET|HEAD | account/adviezen/{adviezen}/edit | App\Http\Controllers\Pro\AdviceController#edit |
| PUT|PATCH | account/coaches | App\Http\Controllers\Shop\AccountController#postPro |
| GET|HEAD | account/coaches | App\Http\Controllers\Shop\AccountController#getPro |
| GET|HEAD | account/instellingen | App\Http\Controllers\Shop\AccountController#getSetting |
| PUT|PATCH | account/instellingen | App\Http\Controllers\Shop\AccountController#postSetting |
| GET|HEAD | account/postvak | App\Http\Controllers\Pro\AccountController#getNotification |
| POST | account/postvak | App\Http\Controllers\Pro\AccountController#postNotification |
| PUT|PATCH|DELETE | account/profiel | App\Http\Controllers\Pro\AccountController#postProfile |
| PUT|PATCH | account/profiel | App\Http\Controllers\Shop\AccountController#postProfile |
| GET|HEAD | account/profiel | App\Http\Controllers\Pro\AccountController#getProfile |
| GET|HEAD | account/winkel | App\Http\Controllers\Pro\AccountController#getShop |
| POST|DELETE | account/winkel | App\Http\Controllers\Pro\AccountController#postShop |
| GET|HEAD | api/user | Closure |
| GET|HEAD | cms | App\Http\Controllers\Admin\CmsController#index |
| GET|HEAD | cms/adviezen | App\Http\Controllers\Admin\AdviceController#index |
| POST | cms/adviezen | App\Http\Controllers\Admin\AdviceController#store |
| GET|HEAD | cms/adviezen/create | App\Http\Controllers\Admin\AdviceController#create |
| PUT|PATCH | cms/adviezen/{adviezen} | App\Http\Controllers\Admin\AdviceController#update |
| DELETE | cms/adviezen/{adviezen} | App\Http\Controllers\Admin\AdviceController#destroy |
| GET|HEAD | cms/adviezen/{adviezen} | App\Http\Controllers\Admin\AdviceController#show |
| GET|HEAD | cms/adviezen/{adviezen}/edit | App\Http\Controllers\Admin\AdviceController#edit |
| GET|HEAD | cms/coaches | App\Http\Controllers\Admin\ProController#index |
| POST | cms/coaches | App\Http\Controllers\Admin\ProController#store |
| GET|HEAD | cms/coaches/create | App\Http\Controllers\Admin\ProController#create |
| GET|HEAD | cms/coaches/{coach} | App\Http\Controllers\Admin\ProController#show |
| DELETE | cms/coaches/{coach} | App\Http\Controllers\Admin\ProController#destroy |
| PUT|PATCH | cms/coaches/{coach} | App\Http\Controllers\Admin\ProController#update |
| GET|HEAD | cms/coaches/{coach}/edit | App\Http\Controllers\Admin\ProController#edit |
| PUT|PATCH | cms/instellingen | App\Http\Controllers\Admin\CmsController#updateSetting |
| GET|HEAD | cms/instellingen | App\Http\Controllers\Admin\CmsController#getSetting |
| GET|HEAD | cms/notificaties | App\Http\Controllers\Admin\NotificationController#index |
| POST | cms/notificaties | App\Http\Controllers\Admin\NotificationController#store |
| GET|HEAD | cms/notificaties/create | App\Http\Controllers\Admin\NotificationController#create |
| GET|HEAD | cms/notificaties/{notificaty} | App\Http\Controllers\Admin\NotificationController#show |
| PUT|PATCH | cms/notificaties/{notificaty} | App\Http\Controllers\Admin\NotificationController#update |
| DELETE | cms/notificaties/{notificaty} | App\Http\Controllers\Admin\NotificationController#destroy |
| GET|HEAD | cms/notificaties/{notificaty}/edit | App\Http\Controllers\Admin\NotificationController#edit |
| POST | cms/winkels | App\Http\Controllers\Admin\ShopController#store |
| GET|HEAD | cms/winkels | App\Http\Controllers\Admin\ShopController#index |
| GET|HEAD | cms/winkels/create | App\Http\Controllers\Admin\ShopController#create |
| GET|HEAD | cms/winkels/{winkel} | App\Http\Controllers\Admin\ShopController#show |
| DELETE | cms/winkels/{winkel} | App\Http\Controllers\Admin\ShopController#destroy |
| PUT|PATCH | cms/winkels/{winkel} | App\Http\Controllers\Admin\ShopController#update |
| GET|HEAD | cms/winkels/{winkel}/edit | App\Http\Controllers\Admin\ShopController#edit |
| GET|HEAD | login | App\Http\Controllers\Auth\LoginController#showLoginForm |
| POST | login | App\Http\Controllers\Auth\LoginController#login |
| POST | logout | App\Http\Controllers\Auth\LoginController#logout |
| POST | password/confirm | App\Http\Controllers\Auth\ConfirmPasswordController#confirm |
| GET|HEAD | password/confirm | App\Http\Controllers\Auth\ConfirmPasswordController#showConfirmForm |
| POST | password/email | App\Http\Controllers\Auth\ForgotPasswordController#sendResetLinkEmail |
| GET|HEAD | password/reset | App\Http\Controllers\Auth\ForgotPasswordController#showLinkRequestForm |
| POST | password/reset | App\Http\Controllers\Auth\ResetPasswordController#reset |
| GET|HEAD | password/reset/{token} | App\Http\Controllers\Auth\ResetPasswordController#showResetForm |
| POST | register | App\Http\Controllers\Auth\RegisterController#register |
| GET|HEAD | register | App\Http\Controllers\Auth\RegisterController#showRegistrationForm |
+------------------+------------------------------------+------------------------------------------------------------------------+
It is not a syntax error, since my IDE does not give an error, so I am thinking it might be a logical one or something I am completely missing...
Any help would be much appreciated.
Kind regards,
Niels
Although the result was pretty embarrassing;
What I did was register multiple routes with the same URI and method. Although they had different namespaces and names, it conflicted.
Fixed by prefixing the URI in the 2 separate groups
Thanks to user lagbox for the answer.
good Morning,
I separate my two guards in Laravel. I would like if someone registers via the Guard "club" he can only access the pages within the Route Group "club", otherwise 403 should come.
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', 'TextController#GetStartseite');
Route::get('/info', function () {
return view('info');
});
Auth::routes();
Route::get('/home', 'TextController#GetWelcome')->name('home');
Route::get('/admin/bund', 'BundController#index')->middleware('auth');
Route::get('/meinProfil', 'UserProfilController#index')->middleware('auth');
Route::post('/meinProfil', 'UserProfilController#update')->middleware('auth');
Route::resource('/meineAusbildung', 'EducationController')->middleware('auth');
Route::POST('/meineAusbildung/delete', 'EducationController#destroy')->middleware('auth');
//Waffen
Route::resource('/meineWaffen', 'WeaponController')->middleware('auth');
Route::POST('/meineWaffen/show', 'WeaponController#show')->middleware('auth');
Route::POST('/meineWaffen/edit', 'WeaponController#update')->middleware('auth');
Route::POST('/meineWaffen/getTable', 'WeaponController#getTableWeapon')->middleware('auth');
Route::POST('/meineWaffen/getDisziTable', 'WeaponController#getDisziWaffe')->middleware('auth');
Route::POST('/meineWaffen/addDiszi', 'WeaponController#addDiziWaffe')->middleware('auth');
Route::POST('/meineWaffen/delDiszi', 'WeaponController#delDisziWaffe')->middleware('auth');
Route::POST('/meineWaffen/DisziDrop', 'WeaponController#getDisziDropDown')->middleware('auth');
Route::get('/meineVereine', 'VereinController#index')->middleware('auth');
//Route::post('/meineVereine/{VereinId}/attach' ,'VereinController#addVerein')->middleware('auth');
Route::post('/meineVereine' ,'VereinController#addVerein')->middleware('auth');
Route::post('/meineVereineDel' ,'VereinController#removeVerein')->middleware('auth');
Route::get('/Zeiterfassen', 'RecordShootingTimeController#index')->middleware('auth');
Route::POST('/Zeiterfassen/waffenDiszi', 'RecordShootingTimeController#getDisziWaffenDropDown')->middleware('auth');
Route::POST('/Zeiterfassen/store', 'RecordShootingTimeController#store')->middleware('auth');
Route::POST('/Zeiterfassen/openEntrys', 'RecordShootingTimeController#getopenEntrys')->middleware('auth');
Route::POST('/Zeiterfassen/show', 'RecordShootingTimeController#show')->middleware('auth');
Route::POST('/Zeiterfassen/update', 'RecordShootingTimeController#update')->middleware('auth');
Route::POST('/Zeiterfassen/delete', 'RecordShootingTimeController#destroy')->middleware('auth');
Route::get('/meinSchiessbuch', 'ShootingbookController#index')->middleware('auth');
Route::POST('/meinSchiessbuch/getTable', 'ShootingbookController#getShootingbook')->middleware('auth');
Route::POST('/meinSchiessbuch/freigabe', 'ShootingbookController#clubfreigabe')->middleware('auth');
Route::POST('/meinSchiessbuch/update', 'ShootingbookController#store')->middleware('auth');
//Vereine
Route::get('verein/', 'TextController#GetClubStartseite')->name('verein/');
Route::group(['namespace' => 'Club'] , function(){
/****Club Login Route*****/
Route::get('verein/login', 'Auth\LoginController#ClubshowLoginForm')->name('club.login');
Route::post('verein/login', 'Auth\LoginController#Clublogin');
Route::post('verein/logout', 'Auth\LoginController#Clublogout')->name('club.logout');
Route::get('verein/register', 'Auth\RegisterController#ClubshowRegistrationForm')->name('club.register');
Route::post('verein/register', 'Auth\RegisterController#register')->name('club.register');
});
Route::group(['middleware' => ['auth', 'club']], function() {
Route::get('verein/home', 'TextController#GetClubWelcome');
Route::get('/verein/unsereStaende', 'ShootingrangeController#index');
Route::POST('/verein/unsereStaende', 'ShootingrangeController#create');
Route::POST('/verein/unsereStaende/delete', 'ShootingrangeController#destroy');
Route::get('/verein/Schiessbuch', 'ShootingbookController#Clubindex');
Route::POST('/verein/Schiessbuch/getTable', 'ShootingbookController#getClubShootingbook');
Route::get('/verein/Genehmigung', 'ShootingbookController#ClubGenehmigung');
Route::POST('/verein/Genehmigung/getTable', 'ShootingbookController#getClubSBzurFreigabe');
Route::POST('/verein/Genehmigung/bestaetigung', 'ShootingbookController#clubbestaetigung');
Route::get('/verein/Profil', 'ClubProfilController#index');
Route::post('/verein/Profil', 'ClubProfilController#update');
Route::Get('/verein/Verband', 'VerbandController#index');
Route::Post('/verein/Verband', 'VerbandController#store');
Route::Post('/verein/Verband/delete', 'VerbandController#destroy');
Route::Get('/verein/Mitglieder', 'ClubController#index');
Route::POST('/verein/Mitglieder', 'ClubController#update');
});
// Route::get('verein/home', 'TextController#GetClubWelcome')->name('verein/home')->middleware('auth:club');
//
//
// Route::get('/verein/unsereStaende', 'ShootingrangeController#index')->middleware('auth:club');
// Route::POST('/verein/unsereStaende', 'ShootingrangeController#create')->middleware('auth:club');
// Route::POST('/verein/unsereStaende/delete', 'ShootingrangeController#destroy')->middleware('auth:club');
//
// Route::get('/verein/Schiessbuch', 'ShootingbookController#Clubindex')->middleware('auth:club');
// Route::POST('/verein/Schiessbuch/getTable', 'ShootingbookController#getClubShootingbook')->middleware('auth:club');
// Route::get('/verein/Genehmigung', 'ShootingbookController#ClubGenehmigung')->middleware('auth:club');
// Route::POST('/verein/Genehmigung/getTable', 'ShootingbookController#getClubSBzurFreigabe')->middleware('auth:club');
// Route::POST('/verein/Genehmigung/bestaetigung', 'ShootingbookController#clubbestaetigung')->middleware('auth:club');
//
// Route::get('/verein/Profil', 'ClubProfilController#index')->middleware('auth:club');
// Route::post('/verein/Profil', 'ClubProfilController#update')->middleware('auth:club');
//
// Route::Get('/verein/Verband', 'VerbandController#index')->middleware('auth:club');
// Route::Post('/verein/Verband', 'VerbandController#store')->middleware('auth:club');
// Route::Post('/verein/Verband/delete', 'VerbandController#destroy')->middleware('auth:club');
//
// Route::Get('/verein/Mitglieder', 'ClubController#index')->middleware('auth:club');
// Route::POST('/verein/Mitglieder', 'ClubController#update')->middleware('auth:club');
I have addes a Middleware "ClubMiddleware" an registered it to Kernel.php routeMiddleware Methode
<?php
namespace App\Http\Middleware;
use App\Club;
use App\User;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class ClubMiddelware
{
/**
* The Guard implementation.
*
* #var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* #param Guard $auth
* #return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* #param \Illuminate\Http\Request $request
* #param \Closure $next
* #return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->getUser()->type !== "club") {
abort(403, 'Zugriff nicht erlaubt');
}
return $next($request);
}
}
php artisan route:list
+--------+-----------+----------------------------------------+-------------------------+----------------------------------------------------------------------------+----------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+----------------------------------------+-------------------------+----------------------------------------------------------------------------+----------------------+
| | GET|HEAD | / | | App\Http\Controllers\TextController#GetStartseite | web |
| | GET|HEAD | Zeiterfassen | | App\Http\Controllers\RecordShootingTimeController#index | web,auth |
| | POST | Zeiterfassen/delete | | App\Http\Controllers\RecordShootingTimeController#destroy | web,auth |
| | POST | Zeiterfassen/openEntrys | | App\Http\Controllers\RecordShootingTimeController#getopenEntrys | web,auth |
| | POST | Zeiterfassen/show | | App\Http\Controllers\RecordShootingTimeController#show | web,auth |
| | POST | Zeiterfassen/store | | App\Http\Controllers\RecordShootingTimeController#store | web,auth |
| | POST | Zeiterfassen/update | | App\Http\Controllers\RecordShootingTimeController#update | web,auth |
| | POST | Zeiterfassen/waffenDiszi | | App\Http\Controllers\RecordShootingTimeController#getDisziWaffenDropDown | web,auth |
| | GET|HEAD | admin/bund | | App\Http\Controllers\BundController#index | web,auth |
| | GET|HEAD | api/api/v1/bund | api.bund.getBundTable | App\Http\Controllers\BundController#getBundTable | api |
| | GET|HEAD | api/api/v1/getEduTable | api.Edu.getEduTable | App\Http\Controllers\EducationController#getEduTable | api |
| | GET|HEAD | api/api/v1/getmeinSchiessbuch | api.SB.getSBTable | App\Http\Controllers\ShootingbookController#getShootingbook | api |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | home | home | App\Http\Controllers\TextController#GetWelcome | web |
| | GET|HEAD | info | | Closure | web |
| | POST | login | | App\Http\Controllers\Auth\LoginController#login | web,guest,guest:club |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController#showLoginForm | web,guest,guest:club |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController#logout | web |
| | GET|HEAD | meinProfil | | App\Http\Controllers\UserProfilController#index | web,auth |
| | POST | meinProfil | | App\Http\Controllers\UserProfilController#update | web,auth |
| | GET|HEAD | meinSchiessbuch | | App\Http\Controllers\ShootingbookController#index | web,auth |
| | POST | meinSchiessbuch/freigabe | | App\Http\Controllers\ShootingbookController#clubfreigabe | web,auth |
| | POST | meinSchiessbuch/getTable | | App\Http\Controllers\ShootingbookController#getShootingbook | web,auth |
| | POST | meinSchiessbuch/update | | App\Http\Controllers\ShootingbookController#store | web,auth |
| | GET|HEAD | meineAusbildung | meineAusbildung.index | App\Http\Controllers\EducationController#index | web,auth |
| | POST | meineAusbildung | meineAusbildung.store | App\Http\Controllers\EducationController#store | web,auth |
| | GET|HEAD | meineAusbildung/create | meineAusbildung.create | App\Http\Controllers\EducationController#create | web,auth |
| | POST | meineAusbildung/delete | | App\Http\Controllers\EducationController#destroy | web,auth |
| | GET|HEAD | meineAusbildung/{meineAusbildung} | meineAusbildung.show | App\Http\Controllers\EducationController#show | web,auth |
| | DELETE | meineAusbildung/{meineAusbildung} | meineAusbildung.destroy | App\Http\Controllers\EducationController#destroy | web,auth |
| | PUT|PATCH | meineAusbildung/{meineAusbildung} | meineAusbildung.update | App\Http\Controllers\EducationController#update | web,auth |
| | GET|HEAD | meineAusbildung/{meineAusbildung}/edit | meineAusbildung.edit | App\Http\Controllers\EducationController#edit | web,auth |
| | GET|HEAD | meineVereine | | App\Http\Controllers\VereinController#index | web,auth |
| | POST | meineVereine | | App\Http\Controllers\VereinController#addVerein | web,auth |
| | POST | meineVereineDel | | App\Http\Controllers\VereinController#removeVerein | web,auth |
| | POST | meineWaffen | meineWaffen.store | App\Http\Controllers\WeaponController#store | web,auth |
| | GET|HEAD | meineWaffen | meineWaffen.index | App\Http\Controllers\WeaponController#index | web,auth |
| | POST | meineWaffen/DisziDrop | | App\Http\Controllers\WeaponController#getDisziDropDown | web,auth |
| | POST | meineWaffen/addDiszi | | App\Http\Controllers\WeaponController#addDiziWaffe | web,auth |
| | GET|HEAD | meineWaffen/create | meineWaffen.create | App\Http\Controllers\WeaponController#create | web,auth |
| | POST | meineWaffen/delDiszi | | App\Http\Controllers\WeaponController#delDisziWaffe | web,auth |
| | POST | meineWaffen/edit | | App\Http\Controllers\WeaponController#update | web,auth |
| | POST | meineWaffen/getDisziTable | | App\Http\Controllers\WeaponController#getDisziWaffe | web,auth |
| | POST | meineWaffen/getTable | | App\Http\Controllers\WeaponController#getTableWeapon | web,auth |
| | POST | meineWaffen/show | | App\Http\Controllers\WeaponController#show | web,auth |
| | DELETE | meineWaffen/{meineWaffen} | meineWaffen.destroy | App\Http\Controllers\WeaponController#destroy | web,auth |
| | PUT|PATCH | meineWaffen/{meineWaffen} | meineWaffen.update | App\Http\Controllers\WeaponController#update | web,auth |
| | GET|HEAD | meineWaffen/{meineWaffen} | meineWaffen.show | App\Http\Controllers\WeaponController#show | web,auth |
| | GET|HEAD | meineWaffen/{meineWaffen}/edit | meineWaffen.edit | App\Http\Controllers\WeaponController#edit | web,auth |
| | POST | password/confirm | | App\Http\Controllers\Auth\ConfirmPasswordController#confirm | web,auth |
| | GET|HEAD | password/confirm | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController#showConfirmForm | web,auth |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController#sendResetLinkEmail | web |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController#reset | web |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController#showLinkRequestForm | web |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController#showResetForm | web |
| | POST | register | | App\Http\Controllers\Auth\RegisterController#register | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController#showRegistrationForm | web,guest |
| | GET|HEAD | verein | verein/ | App\Http\Controllers\TextController#GetClubStartseite | web |
| | GET|HEAD | verein/Genehmigung | | App\Http\Controllers\ShootingbookController#ClubGenehmigung | web,auth,club |
| | POST | verein/Genehmigung/bestaetigung | | App\Http\Controllers\ShootingbookController#clubbestaetigung | web,auth,club |
| | POST | verein/Genehmigung/getTable | | App\Http\Controllers\ShootingbookController#getClubSBzurFreigabe | web,auth,club |
| | GET|HEAD | verein/Mitglieder | | App\Http\Controllers\ClubController#index | web,auth,club |
| | POST | verein/Mitglieder | | App\Http\Controllers\ClubController#update | web,auth,club |
| | POST | verein/Profil | | App\Http\Controllers\ClubProfilController#update | web,auth,club |
| | GET|HEAD | verein/Profil | | App\Http\Controllers\ClubProfilController#index | web,auth,club |
| | GET|HEAD | verein/Schiessbuch | | App\Http\Controllers\ShootingbookController#Clubindex | web,auth,club |
| | POST | verein/Schiessbuch/getTable | | App\Http\Controllers\ShootingbookController#getClubShootingbook | web,auth,club |
| | GET|HEAD | verein/Verband | | App\Http\Controllers\VerbandController#index | web,auth,club |
| | POST | verein/Verband | | App\Http\Controllers\VerbandController#store | web,auth,club |
| | POST | verein/Verband/delete | | App\Http\Controllers\VerbandController#destroy | web,auth,club |
| | GET|HEAD | verein/home | | App\Http\Controllers\TextController#GetClubWelcome | web,auth,club |
| | POST | verein/login | | App\Http\Controllers\Club\Auth\LoginController#Clublogin | web,guest:club,guest |
| | GET|HEAD | verein/login | club.login | App\Http\Controllers\Club\Auth\LoginController#ClubshowLoginForm | web,guest:club,guest |
| | POST | verein/logout | club.logout | App\Http\Controllers\Club\Auth\LoginController#Clublogout | web,guest:club,guest |
| | POST | verein/register | club.register | App\Http\Controllers\Club\Auth\RegisterController#register | web,guest:club |
| | GET|HEAD | verein/register | club.register | App\Http\Controllers\Club\Auth\RegisterController#ClubshowRegistrationForm | web,guest:club |
| | GET|HEAD | verein/unsereStaende | | App\Http\Controllers\ShootingrangeController#index | web,auth,club |
| | POST | verein/unsereStaende | | App\Http\Controllers\ShootingrangeController#create | web,auth,club |
| | POST | verein/unsereStaende/delete | | App\Http\Controllers\ShootingrangeController#destroy | web,auth,club |
+--------+-----------+----------------------------------------+-------------------------+----------------------------------------------------------------------------+----------------------+
My Browser show the errors Message ERR_TOO_MANY_REDIRECTS
I don't really understand the concept yet. What am I doing wrong?
Thank you
Matthias
EDIT: I have Post the complete web.php
you know, Laravel Passport have predefined routes as folllow:
php artisan route:list
+--------+----------+-----------------------------------------+------+---------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-----------------------------------------+------+---------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | POST | oauth/authorize | | ...\ApproveAuthorizationController#approve | web,auth |
| | GET|HEAD | oauth/authorize | | ...\AuthorizationController#authorize | web,auth |
| | DELETE | oauth/authorize | | ...\DenyAuthorizationController#deny | web,auth |
| | GET|HEAD | oauth/clients | | ...\ClientController#forUser | web,auth |
| | POST | oauth/clients | | ...\ClientController#store | web,auth |
| | PUT | oauth/clients/{client_id} | | ...\ClientController#update | web,auth |
| | DELETE | oauth/clients/{client_id} | | ...\ClientController#destroy | web,auth |
| | GET|HEAD | oauth/personal-access-tokens | | ...\PersonalAccessTokenController#forUser | web,auth |
| | POST | oauth/personal-access-tokens | | ...\PersonalAccessTokenController#store | web,auth |
| | DELETE | oauth/personal-access-tokens/{token_id} | | ...\PersonalAccessTokenController#destroy | web,auth |
| | GET|HEAD | oauth/scopes | | ...\ScopeController#all | web,auth |
| | POST | oauth/token | | ...\AccessTokenController#issueToken | throttle |
| | POST | oauth/token/refresh | | ...\TransientTokenController#refresh | web,auth |
| | GET|HEAD | oauth/tokens | | ...\AuthorizedAccessTokenController#forUser | web,auth |
| | DELETE | oauth/tokens/{token_id} | | ...\AuthorizedAccessTokenController#destroy | web,auth |
+--------+----------+-----------------------------------------+------+---------------------------------------------+--------------+
Is it possible to modify that route?
e.g. oauth/authorize become api/v1/oauth/authorize
if yes, how?
I've been searching for answer quite sometime...
Yes, it is. You can declare your own routes in Passport::routes() method.
Include this inside the boot() method of your app/Providers/AuthServiceProvider file.
app/Providers/AuthServiceProvider.php
public function boot()
{
Passport::routes(null, ['prefix' => 'api/v1/oauth']);
}
It seems like the routes method has been removed (Passport 11.x).
In order to do this now, you would need to publish the Passport configuration file and set the path attribute to the desired value: api/v1/oauth.
php artisan vendor:publish --tag=passport-config
// config/passport.php
<?php
return [
...
'path' => 'api/v1/oauth',
];
I haven't been able to find this information in the documentation. I figured this out by looking at the source code. Here's the link for further reference.
I'm trying to submit data to my Laravel Controller using Ajax, but I'm getting the error "422 (Unprocessable Entity)".
I've done some Googling, and I think it is to do with the JSON being passed, but I'm unsure how to solve it.
The following is what I believe to be the relevant info:
Script
$("#addStepNew").click(function() {
var step_ingredients = JSON.stringify(stepIngredients)
var step_description = $('#stepDescription').val();
var prep_step = $('input[name=prepStep]:checked').val();
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "post",
data: "ingredients="+step_ingredients+"&description="+step_description+"&is_prep="+prep_step+"step_no=1",
dataType:'json',
url: "{{ route('ingredients.store', ['id' => $recipe->id]) }}",
success:function(data){
console.log(data);
$("#output").html('<div class="alert alert-success my-0">'+data.name+' added</div>');
$("#output").toggleClass("invisible")
$("#output").fadeOut(2000);
}
});
});
The console.log(stepIngredients) gives [{"ingredient_id":"9","ingredient_quantity":"3","Ingredient_units":"kilograms"}]
The idea is to pass it all through to my controller, and write the values to the DB, but at the minute I can't even pass the info.
I've done the following to my controller:
public function store(Request $request)
{
//$this->validate($request);
/*
$step = new Step;
$step->recipe_id = $request->recipe_id;
$step->step_no = $request->step_no;
$step->method = $request->description;
$step->save();
*/
$data = [
'success' => true,
'message'=> 'Your AJAX processed correctly',
] ;
return response()->json($data);
}
So as I understand it (I'm teaching myself this as I go along), if the AJAX is passed successfully, then it should return the success message and output it in my #output div?
+--------+-----------+--------------------------+--------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+--------------------------+--------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | / | | App\Http\Controllers\PagesController#index | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | home | home | App\Http\Controllers\HomeController#index | web,auth |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController#showLoginForm | web,guest |
| | POST | login | | App\Http\Controllers\Auth\LoginController#login | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController#logout | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController#sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController#showLinkRequestForm | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController#reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController#showResetForm | web,guest |
| | GET|HEAD | recipes | recipes.index | App\Http\Controllers\RecipesController#index | web,auth |
| | POST | recipes | recipes.store | App\Http\Controllers\RecipesController#store | web,auth |
| | GET|HEAD | recipes/create | recipes.create | App\Http\Controllers\RecipesController#create | web,auth |
| | GET|HEAD | recipes/{id}/ingredients | ingredients.create | App\Http\Controllers\IngredientsController#create | web,auth |
| | POST | recipes/{id}/ingredients | ingredients.store | App\Http\Controllers\IngredientsController#store | web,auth |
| | GET|HEAD | recipes/{id}/steps | steps.create | App\Http\Controllers\StepsController#create | web,auth |
| | POST | recipes/{id}/steps | steps.store | App\Http\Controllers\StepsController#store | web,auth |
| | PUT|PATCH | recipes/{recipe} | recipes.update | App\Http\Controllers\RecipesController#update | web,auth |
| | DELETE | recipes/{recipe} | recipes.destroy | App\Http\Controllers\RecipesController#destroy | web,auth |
| | GET|HEAD | recipes/{recipe} | recipes.show | App\Http\Controllers\RecipesController#show | web,auth |
| | GET|HEAD | recipes/{recipe}/edit | recipes.edit | App\Http\Controllers\RecipesController#edit | web,auth |
| | POST | register | | App\Http\Controllers\Auth\RegisterController#register | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController#showRegistrationForm | web,guest |
| | GET|HEAD | tags | tags.index | App\Http\Controllers\TagsController#index | web,auth |
| | POST | tags | tags.store | App\Http\Controllers\TagsController#store | web,auth |
| | GET|HEAD | tags/create | tags.create | App\Http\Controllers\TagsController#create | web,auth |
| | GET|HEAD | tags/{tag} | tags.show | App\Http\Controllers\TagsController#show | web,auth |
| | PUT|PATCH | tags/{tag} | tags.update | App\Http\Controllers\TagsController#update | web,auth |
| | DELETE | tags/{tag} | tags.destroy | App\Http\Controllers\TagsController#destroy | web,auth |
| | GET|HEAD | tags/{tag}/edit | tags.edit | App\Http\Controllers\TagsController#edit | web,auth |
+--------+-----------+--------------------------+--------------------+------------------------------------------------------------------------+--------------+