> ## Documentation Index
> Fetch the complete documentation index at: https://inertiajs-vi.tuantq.online/llms.txt
> Use this file to discover all available pages before exploring further.

# Routing

## Định nghĩa route

Khi dùng Inertia, toàn bộ route của ứng dụng được định nghĩa phía server. Điều này có nghĩa bạn không cần Vue Router hay React Router. Thay vào đó, chỉ cần định nghĩa Laravel route và trả [Inertia response](/v3/the-basics/responses) từ các route đó.

## Route rút gọn

Nếu có [page](/v3/the-basics/pages) không cần controller method tương ứng, như trang "FAQ" hoặc "giới thiệu", bạn có thể route trực tiếp tới component bằng phương thức `Route::inertia()`.

```php theme={null}
Route::inertia('/about', 'About');
```

## Tạo URL

Một số framework phía máy chủ cho phép tạo URL từ named route. Tuy nhiên, bạn sẽ không truy cập được các helper đó ở phía client. Sau đây là một vài cách để vẫn sử dụng named route với Inertia.

Lựa chọn đầu tiên là tạo URL ở phía máy chủ và truyền chúng dưới dạng props. Hãy chú ý trong ví dụ này, chúng ta truyền `edit_url` và `create_url` vào component `Users/Index`.

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

Khi dùng Laravel, bạn có một số lựa chọn để cung cấp route phía máy chủ cho code phía client:

### Wayfinder

Khi dùng [Wayfinder](https://github.com/laravel/wayfinder), bạn có thể truyền trực tiếp TypeScript method được sinh vào [Link component](/v3/the-basics/links#wayfinder), [form helper](/v3/the-basics/forms#wayfinder) hoặc [router method](/v3/the-basics/manual-visits#wayfinder), và Inertia biết cách xử lý. Nếu phát triển ứng dụng bằng một trong các [starter kit](https://laravel.com/docs/starter-kits) của Laravel thì Wayfinder đã được cấu hình sẵn.

### Ziggy

Thư viện [Ziggy](https://github.com/tighten/ziggy) có thể cung cấp các named route phía máy chủ cho phía client qua hàm `route()` toàn cục. Nếu dùng Vue plugin đi kèm Ziggy, bạn có thể gọi `route()` trực tiếp trong template.

```vue theme={null}
<Link :href="route('users.create')">Create User</Link>
```

Khi bật [server-side rendering](/v3/advanced/server-side-rendering), bạn có thể truyền options object vào Ziggy plugin trong file `ssr.js`. Object này nên chứa route definition và location hiện tại.

```js theme={null}
.use(ZiggyVue, {
    ...page.props.ziggy,
    location: new URL(page.props.ziggy.location),
});
```

## Tùy chỉnh URL của trang

[Page object](/v3/core-concepts/the-protocol#the-page-object) chứa `url` đại diện cho URL của page hiện tại. Mặc định Laravel adapter resolve giá trị này bằng phương thức `fullUrl()` trên instance `Request`, nhưng loại bỏ scheme và host để kết quả là relative URL.

Nếu cần tùy chỉnh cách URL được resolve, bạn có thể cung cấp resolver trong phương thức `urlResolver` của middleware Inertia `HandleInertiaRequests`.

```php theme={null}
class HandleInertiaRequests extends Middleware
{
    public function urlResolver()
    {
        return function (Request $request) {
            // Return the URL for the request...
        };
    }
}
```

Ngoài ra, bạn có thể định nghĩa resolver bằng phương thức `Inertia::resolveUrlUsing()`.

```php theme={null}
Inertia::resolveUrlUsing(function (Request $request) {
    // Return the URL for the request...
});
```

***

## Tài liệu chính thức

Bài dịch này được đối chiếu từ [tài liệu Inertia.js v3 chính thức](https://inertiajs.com/docs/v3/the-basics/routing). Nếu có khác biệt do phiên bản hoặc cập nhật mới, hãy ưu tiên tài liệu chính thức làm nguồn tham chiếu.
