본문 바로가기
프로그래밍/Web

Laravel Inertia - Routing

by 사악신 2024. 1. 18.

라우팅

라우트 정의하기

Inertia를 사용할 때, 애플리케이션의 모든 라우트는 서버 측에서 정의됩니다. 이는 Vue Router나 React Router가 필요하지 않다는 것을 의미합니다. 대신, Laravel 라우트를 정의하고 해당 라우트에서 Inertia 응답을 반환하기만 하면 됩니다.

간편한 라우트

"FAQ"나 "about" 페이지처럼 해당 컨트롤러 메소드가 필요 없는 페이지가 있다면, Route::inertia() 메소드를 통해 컴포넌트로 직접 라우팅할 수 있습니다.

Route::inertia('/about', 'About');

URL 생성하기

일부 서버 측 프레임워크는 명명된 라우트에서 URL을 생성할 수 있습니다. 그러나 클라이언트 측에서 이러한 헬퍼에 접근할 수는 없습니다. Inertia에서 명명된 라우트를 사용하는 몇 가지 방법이 있습니다.

첫 번째 옵션은 서버 측에서 URL을 생성하고 이를 props로 전달하는 것입니다. 이 예제에서는 edit_urlcreate_urlUsers/Index 컴포넌트로 전달하는 방법을 볼 수 있습니다.

class UsersController extends Controller
{
    public function index()
    {
        return Inertia::render('Users/Index', [
            'users' => User::all()->map(function ($user) {
                return [
                    'id' => $user->id,
                    'name' => $user->name,
                    'email' => $user->email,
                    'edit_url' => route('users.edit', $user),
                ];
            }),
            'create_url' => route('users.create'),
        ]);
    }
}

그러나 Laravel을 사용하는 경우, Ziggy 라이브러리를 사용하여 서버 측의 명명된 라우트를 전역 route() 함수를 통해 사용할 수 있습니다. 실제로 Laravel의 스타터 키트 중 하나를 사용하여 애플리케이션을 개발하는 경우, Ziggy는 이미 구성되어 있습니다.

Vue와 Ziggy를 함께 사용하는 경우, 이 함수를 커스텀 $route 속성으로 사용할 수 있어 템플릿에서 직접 사용하기 유용합니다.

app.config.globalProperties.$route = route

<Link :href="$route('users.create')">Create User</Link>
반응형

'프로그래밍 > Web' 카테고리의 다른 글

Laravel Inertia - Links  (0) 2024.01.18
Laravel Inertia - Title & meta  (0) 2024.01.18
Laravel Inertia - Redirects  (0) 2024.01.18
Laravel Inertia - Responses  (0) 2024.01.18
Laravel Inertia - Pages  (0) 2024.01.18

댓글