用途:在 Phoenix 应用中编写与维护控制器,连接路由器与视图,处理 HTTP 请求、参数、响应与测试。
主要能力:定义 action(如 home、show、index),用模式匹配从 params 中提取参数或获取完整参数映射;用 render/3 渲染 HTML 模板,可用 layout: false 关闭布局,可用 assign/3 或直接把赋值传给 render/3;用 put_flash/3 设置 :info、:error 等提示消息,clear_flash 清除,常与 redirect 配合;用 redirect(conn, to: ~p"/posts") 做内部跳转,也支持 external 外部跳转;通过 action_fallback 集中处理 {:error, :not_found}、{:error, :unauthorized} 等错误分支并设置状态码与视图;可配置 formats: [:html, :json]。
使用方式:控制器使用 use HelloWeb, :controller,action 接收 conn 与 params;路由需与 action 名对应(如 get "/", PageController, :index);渲染时控制器与视图共享根名。测试使用 ConnCase,配合 get/post 与 ~p 路径,断言 html_response、redirected_to、redirected_params、get_flash 等。
适用场景:新增控制器 action、校验参数、渲染带动态数据模板、表单提交后的重定向与提示、RESTful 接口、与 context 集成、文件上传、分页、调试请求响应、控制器测试与错误处理。
限制与注意:资料未提供安装命令、价格或性能数据。实践中应保持控制器精简,业务逻辑放入 context;尽早校验参数;使用验证路由 ~p;避免硬编码路径、过度 assigns 与泄露内部错误;注意 CSRF 保护与错误状态码设置。