CodeWriteson
Controller içerisinde normal işleminizi yapıp sanki Blade basıyormuş gibi view() yerine Inertia::render() kullanarak Vue bileşeni basıyorsunuz:
app/Http/Controllers/UserController.php:
class UsersController extends Controller
{
public function index()
{
$users = User::all();
return Inertia::render('Users', compact('users'));
}
}
Bu da bastığınız bileşen:
resources/js/Pages/Users.vue:
<template>
<table>
<thead>
<tr>
<td>Id</td>
<td>Adı</td>
<td>Email</td>
<td></td>
</tr>
</thead>
<tbody>
<tr v-for="user in users" :key="${user.id}">
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
<td>{{ user.email }}</td>
<td><inertia-link :href="`/users/${user.id}`">Ayrıntılar</inertia-link></td>
</tr>
</tbody>
</table>
</template>
<script>
export default {
props: {
users: Array,
},
}
</script>
Geri kalanını Inertia hallediyor. <inertia-link> elementine bakarsanız eğer:
<inertia-link :href="`/users/${user.id}`">Ayrıntılar</inertia-link>
İşte bu da sizin Turbolinks'in yaptığı işi yapıyor, yani sayfayı yenilemeden içeriği yüklüyor. Kısacası bir API yazmadan, Blade kullanırmış gibi bir Vue arayüz hazırlayabiliyorsunuz. Öteki türlü Laravel tarafında JSON response dönmeniz gerekecekti ve Vue tarafında Users.vue içerisinde örneğin mounted() içinde AJAX isteği atıp veriyi çekmeniz gerekecekti...
Yanlış anlaşılmasın, bu iyi ya da doğru yol demiyorum. Sadece klasik yaklaşımı biraz kolaylaştıran bir alternatif.