From 3a75d02f403eb5b2aecfeab648f1724d5d515764 Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Mon, 4 Sep 2017 11:08:40 +0800 Subject: [PATCH] phoenix: update --- phoenix-migrations.md | 4 +- phoenix.md | 89 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/phoenix-migrations.md b/phoenix-migrations.md index fb1b465b2..f87d12e50 100644 --- a/phoenix-migrations.md +++ b/phoenix-migrations.md @@ -11,7 +11,7 @@ updated: 2017-09-04 ```bash $ mix ecto.gen.migration update_posts_table creating priv/repo/migrations/20160602085927_update_posts_table.exs - ... + ยทยทยท ``` ```bash @@ -27,7 +27,7 @@ Creates a migration (no models). $ mix phoenix.gen.model Message messages user_id:integer content:text ``` -Creates models and tests. +This is only for Phoenix 1.2 or older; models aren't available in Phoenix 1.3+. ## Migration functions diff --git a/phoenix.md b/phoenix.md index 137e765d2..4ad9a9db2 100644 --- a/phoenix.md +++ b/phoenix.md @@ -1,9 +1,12 @@ --- title: Phoenix category: Elixir +layout: 2017/sheet +weight: -1 +updated: 2017-09-04 --- -### Directory +### Directory structure ``` config/ @@ -11,11 +14,93 @@ web/ controllers/ models/ views/ - templates/ static/ ``` +This is Phoenix 1.2's structure. Phoenix 1.3 has no `models`. + +### Migrations + +See [Ecto migrations cheatsheet](./phoenix-migrations). +{: .-setup} + +```bash +$ mix ecto.gen.migration update_posts_table + creating priv/repo/migrations/20160602085927_update_posts_table.exs + ... +``` + +```elixir +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 + +See [Phoenix routing cheatsheet](./phoenix-routing). +{: .-setup} + +```elixir +get "/", PageController, :index + +resources "/users", UserController do + resources "/posts", PostController +end +``` + +```elixir +user_post_path(:index, 17) #=> /users/17/posts +user_post_path(:show, 17, 12) #=> /users/17/posts/12 +``` + +### Conn + +See [Phoenix conn cheatsheet](./phoenix-conn). +{: .-setup} + +```elixir +conn.host #=> "example.com" +conn.method #=> "GET" +conn.path_info #=> ["posts", "1"] +conn.request_path #=> "/posts/1" +``` + +```elixir +conn +|> put_status(202) +|> html("...") +|> json(%{ message: "Hello" }) +|> text("Hello") +|> redirect(to: "/foo") +|> render("index.html") +|> render("index.html", hello: "world") +|> render(MyApp.ErrorView, "404.html") +``` + +### Ecto + + +See [Ecto cheatsheet](./phoenix-ecto). +{: .-setup} + +```bash +$ mix phx.gen.html \ + Accounts \ # domain + Profile \ # schema + profiles \ # table name + email:string \ + age:integer +``` + +### Also see + - [Plug.Conn](./phoenix-conn.html) - [Ecto migrations](./phoenix-migrations.html) - [Router](./phoenix-routing.html)