Quick start
# Install Phoenix
mix local.hex
mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
# Create a new project
mix phx.new hello
# Start the application
mix phx.server
Install Erlang, Elixir, Node.js, PostgreSQL first. See: Installation (hexdocs.pm)
Directory structure
./
โโโ _build
โโโ assets/
โ โโโ css/
โ โโโ js/
โ โโโ static/
โ โโโ node_modules/
โโโ config/
โโโ deps/
โโโ lib/
โ โโโ hello/
โ โโโ hello.ex
โ โโโ hello_web/
โ โ โโโ channels/
โ โ โโโ controllers/
โ โ โโโ templates/
โ โ โโโ views/
โ โ โโโ router.ex
โ โ โโโ gettext.ex
โ โโโ hello_web.ex
โโโ priv/
โโโ test/
See: Adding pages (hexdocs.pm)
Migrations
$ mix ecto.gen.migration update_posts_table
creating priv/repo/migrations/20160602085927_update_posts_table.exs
ยทยทยท
create table(:documents) do
add :title, :string
add :title, :string, default: "Hello"
add :body, :text
add :age, :integer
add :price, :float, precision: 10, scale: 2
timestamps
end
Routing
get "/", PageController, :index
resources "/users", UserController do
resources "/posts", PostController
end
user_post_path(conn, :index, 17) # โ /users/17/posts
user_post_path(conn, :show, 17, 12) # โ /users/17/posts/12
Conn
conn.host # โ "example.com"
conn.method # โ "GET"
conn.path_info # โ ["posts", "1"]
conn.request_path # โ "/posts/1"
conn
|> put_status(202)
|> html("<html><head>ยทยทยท")
|> json(%{ message: "Hello" })
|> text("Hello")
|> redirect(to: "/foo")
|> render("index.html")
|> render("index.html", hello: "world")
|> render(MyApp.ErrorView, "404.html")
Ecto
$ mix phx.gen.html \
Accounts \ # domain
Profile \ # schema
profiles \ # table name
email:string \
age:integer
Also see
- Phoenix framework site (phoenixframework.org)
- Phoenix: getting started (hexdocs.pm)
0 Comments for this cheatsheet. Write yours!