lruisen/inertia-think
inertia-think
Inertia.js的ThinkPHP适配器(ThinkPHP 8)
访问inertiajs.com了解更多信息。
安装依赖项
首先,使用Composer包管理器安装Inertia服务器端适配器。
composer require lruisen/inertia-think
根模板
接下来,设置将在访问应用程序的第一个页面时加载的根模板。这将用于加载您的网站资源(CSS和JavaScript),还将包含一个根<div>,用于启动您的JavaScript应用程序。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
<script type="module" src="http://[::1]:5173/@vite/client"></script>
<script type="module" src="http://[::1]:5173/resources/js/app.js"></script>
</head>
<body>
<div id="app" data-page={:json_encode($page)}></div>
</body>
</html>
默认情况下,Inertia的ThinkPHP适配器将假定您的根模板名为app.html。如果您想使用不同的根视图,可以使用Inertia::setRootView()方法进行更改。
中间件
::: warning
将Inertia\InertiaResponseMiddleware 中间件加入到app/middleware.php文件中或您的指定应用中间件配置文件中。
:::
接下来,我们需要创建Inertia中间件。您可以通过以下command命令来完成将HandleInertiaRequests中间件发布到您的应用程序。
php think inertia:middleware
中间件发布后:
-
如果是单应用,将
HandleInertiaRequests中间件附加到app/middleware.php文件中。 -
如果是多应用,将
HandleInertiaRequests中间件添加到对应应用的middleware.php文件中。
创建响应
就这样,服务端配置基本完成!现在,您可以开始创建Inertia页面并通过响应进行渲染了。
use Inertia\facade\Inertia;
class EventsController extends Controller
{
public function show(Event $event)
{
return Inertia::render('Event/Show', [
'event' => $event->only(
'id',
'title',
'start_date',
'description'
),
]);
}
}
关于路由
如果您的页面不需要相应的控制器方法,如“FAQ”或“about”页面,则可以通过InertiaRoute::inertia()方法或使用闭包形式直接路由到组件。
use Inertia\Facade\InertiaRoute;
use think\facade\Route;
InertiaRoute::inertia('/about','about');
# 或
Route::get('/about',fn () => inertia('about'));