# `MishkaGervaz.Form.Web.Events.SubmitHandler`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/form/web/events/submit_handler.ex#L1)

Handles form submission (phx-submit events).

## Overridable Functions

- `submit/3` - Submit the form (create or update)
- `transform_params/2` - Transform params before submission
- `after_save/3` - Handle post-save logic

## User Override

    defmodule MyApp.Form.SubmitHandler do
      use MishkaGervaz.Form.Web.Events.SubmitHandler

      def transform_params(state, params) do
        params |> super(state) |> Map.put("custom_field", "value")
      end
    end

Top-level helpers (`format_form_errors/1`, `extract_form_level_errors/2`,
`cleanup_temp_uploads/1`, `push_js_hook/4`, `merge_defaults/2`,
`drop_protected_fields/2`, `field_restricted?/2`, `field_readonly?/2`)
are public so user overrides can reuse them — they live outside the
`__using__` macro to avoid per-consumer compile cost.

See `MishkaGervaz.Form.Web.Events`,
`MishkaGervaz.Form.Web.Events.Helpers` (for `parse_typed_params/2` and
`merge_uploaded_files/4`),
`MishkaGervaz.Form.Web.DataLoader`,
`MishkaGervaz.Form.Web.UploadHelpers`, and the sibling sub-handlers.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
