Provides Phoenix Controller integration with attr-style parameter definitions.
This module enables parameter handling in controllers using a syntax similar to Phoenix
Components' attr macro, but using param to define parameters with validation per function.
Usage
defmodule MyAppWeb.UserController do
use MyAppWeb, :controller
use Filtr.Controller
param :name, :string, required: true
param :age, :integer, min: 18
def create(conn, params) do
# params.name is guaranteed to be a string
# params.age is guaranteed to be an integer >= 18
json(conn, %{message: "User #{params.name} created"})
end
param :q, :string, default: ""
param :page, :integer, default: 1, min: 1
def search(conn, params) do
# params.q is a string (defaults to "")
# params.page is an integer >= 1 (defaults to 1)
json(conn, %{query: params.q, page: params.page})
end
end
Summary
Functions
Defines a parameter with its type and validation options for the next controller function.