创建 Inertia 响应很简单。 首先,在您的控制器或路由中调用 Inertia::render()
方法,提供您要渲染的 JavaScript 页面组件 的名称以及页面的任何 props(数据)。
在下面的示例中,我们将传递一个名为 event
的单个 prop,它包含四个属性(id
、title
、start_date
和 description
)到 Event/Show
页面组件。
use Inertia\Inertia;
class EventsController extends Controller
{
public function show(Event $event)
{
return Inertia::render('Event/Show', [
'event' => $event->only(
'id',
'title',
'start_date',
'description'
),
]);
// Alternatively, you can use the inertia() helper...
return inertia('Event/Show', [
'event' => $event->only(
'id',
'title',
'start_date',
'description'
),
]);
}
}
在某些情况下,您可能希望在应用程序的根 Blade 模板中访问您的 prop 数据。 例如,您可能希望添加元描述标签、Twitter 卡元标签或 Facebook Open Graph 元标签。 您可以通过 $page
变量访问此数据。
<meta name="twitter:title" content="{{ $page['props']['event']->title }}">
有时您甚至可能希望向根模板提供不会发送到 JavaScript 页面/组件的数据。 这可以通过调用 withViewData
方法来实现。
return Inertia::render('Event', ['event' => $event])
->withViewData(['meta' => $event->meta]);
调用 withViewData
方法后,您可以像访问 Blade 模板变量一样访问定义的数据。
<meta name="description" content="{{ $meta }}">
为了启用客户端历史记录导航,所有 Inertia 服务器响应都存储在浏览器的历史记录状态中。 但是,请记住,一些浏览器对可以在历史记录状态中保存的数据量施加了大小限制。
例如,Firefox 的大小限制为 640k 个字符,如果超过此限制,则会抛出 NS_ERROR_ILLEGAL_VALUE
错误。 通常,这比您在构建应用程序时实际需要的要多得多。