Phoenix中使用form_for出现标签匹配及函数未定义错误求助
问题原因
- 第一个
unmatched closing tag报错:你使用的是旧版EEx模板的form_for/3函数语法,不符合HEEx模板的严格标签校验规则。form_for/3执行时会自动输出<form>开始标签,你手动补充</form>闭合标签会导致模板解析时结构校验失败。 - 第二个
undefined function form_for/3报错:Phoenix 1.7及以上版本已经默认移除了对form_for/3函数的全局导入,该函数已被官方标记为弃用,新版本统一使用<.form>内置函数组件实现表单功能,直接调用旧函数就会触发未定义报错。
解决方案
直接替换为Phoenix官方推荐的<.form>组件写法即可,适配HEEx规则且不会触发弃用警告,正确代码如下:
<.form id="chat-form" for={:chat} action="#" phx-submit="submit_message" > <input type="text" name="chat[message]" placeholder="Enter Message" /> </.form>
如果暂时需要兼容旧版form_for写法(不推荐长期使用),可以在对应LiveView模块顶部手动导入函数:
import Phoenix.HTML.Form, only: [form_for: 3]
内容的提问来源于stack exchange,提问作者piwayof838
相关产品推荐
相关产品推荐

