Nixtone
@Nixtone

Почему при указании namespace() в роутах laravel9 добавка приставляется в начало namespace контроллера?

Хочу сгруппировать контроллеры для админки в папке "app/http/controllers", создал дочернюю папку "admin/post", структура папок получается "app/http/controllers/admin/post".

Соответственно отражаю это методом namespace() в группировке маршрутов (файл web.php):
Route::namespace('Admin')->prefix('admin')->group(function() {
    Route::namespace('Post')->group(function() {
        Route::get('/post', IndexController::class)->name('admin.post.index');
    });
});


(файл app/http/controllers/admin/post/IndexController.php) :
namespace App\Http\Controllers\Admin\Post;

use App\Http\Controllers\Controller;
use App\Http\Filters\PostFilter;
use App\Http\Requests\FilterRequest;
use App\Models\Post;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    public function __invoke()
    {
        dd('admin test 1');
    }
}


В итоге дописывает уточения из метода namespace() в начало, и выкидывает ошибку:
Invalid route action: [Admin\Post\App\Http\Controllers\IndexController].


Как сделать так чтобы доуточнение namespace дописывалось в конец а не в начало?

Нужно так:
[\App\Http\Controllers\Admin\Post]
  • Вопрос задан
  • 305 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Не нужен там неймспейс

use App\Http\Controllers\Admin\Post\IndexController;

Route::prefix('admin')->group(function() {
   Route::get('/post', IndexController::class)->name('admin.post.index');
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы