Route::group(['prefix' => '{locale}', 'where'=>['locale'=>'(kz|ru)'] , 'namespace' => 'Frontend', 'as' => 'frontend.', 'middleware' => 'locale'], function(){
Route::group(['prefix' => 'organizations', 'as' => 'organizations.'], function(){
Route::get('{organization}', 'OrganizationsController@show')->name('show');
});
});
<?php
//App\Http\Middleware\Locale.php
namespace App\Http\Middleware;
class Locale
{
public function handle($request, \Closure $next)
{
if ($request->method() === 'GET') {
$segment = $request->segment(1);
if (in_array($segment, config('app.locales'))) {
session(['locale' => $segment]);
app()->setLocale($segment);
}
}
return $next($request);
}
}
<?php
namespace App\Http\Controllers\Frontend;
use App\Models\Base\Organization;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class OrganizationsController extends Controller
{
public function show(Organization $organization)
{
return view('frontend.organizations.show', compact('organization'));
}
}
В итоге при открытии
/ru/orgainisation/1
выходит вот такое сообщение:
Argument 1 passed to App\Http\Controllers\Frontend\OrganizationsController::show() must be an instance of App\Models\Base\Organization, string given
Как я понимаю, вместо одного параметра organization(id) в метод show передаётся ещё и locale.
Как можно исключить prefix?