You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Precognition 搭配 Alpine.data() 报错$form未定义求助

解决Alpine.data()中Laravel Precognition $form未定义的问题

问题原因

Alpine.data()定义的组件拥有独立作用域,Laravel Precognition注入的$form魔法属性不会自动进入该作用域;而直接在x-data中定义时,上下文属于全局范围,因此能正常访问$form。

解决方案

在Alpine.data()的组件函数中,通过参数注入获取$form,并挂载到组件的响应式数据中:

1. 定义组件时注入$form

Alpine.data('loginForm', ($form) => ({
    // 将$form挂载到组件对象
    form: $form,

    init() {
        // 初始化Precognition表单
        this.form = $form('POST', '/login', {
            email: '',
            password: '',
            remember: false
        });
    },

    submit() {
        this.form.submit();
    }
}));

2. 模板中使用组件

<div x-data="loginForm">
    <input type="email" x-model="form.email" />
    <span x-text="form.errors.email"></span>

    <input type="password" x-model="form.password" />
    <span x-text="form.errors.password"></span>

    <button type="button" x-on:click="submit()">登录</button>
</div>

注意事项

  • 若表单通过Precognition的useForm钩子创建,务必在组件的init方法中初始化,不要直接在组件顶层对象赋值,避免响应式失效。
  • 确认Laravel Precognition脚本在Alpine.js之后正确引入。

内容的提问来源于stack exchange,提问作者Chirag Unadkat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:12:05