Как работать с формами с помощью Phoenix LiveView - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть форма в Фениксе, которая выглядит следующим образом

<%= form_for @changeset, Routes.post_path(@conn, :create, @post), [method: "post", multipart: true], fn f -> %>
  <div class="row mt-3">
    <div class="form-group col-6">
      <%= input f, :title, "Title", [class: "form-control", type: "text", placeholder: "Enter Title", required: true] %>
    </div>
    <div class="form-group col-6">
     <%= input f, :description, "Description", [class: "form-control", type: "text", placeholder: "Enter Description", required: true] %>
    </div>
  </div>
  <div class="d-flex mt-3">
   <%= submit "Create Post" %>
  </div>
<% end %>

Приведенная выше форма работает нормально, Теперь я хочу изменить эту форму для реализации LiveView.Итак, я сделал что-то вроде этого

<%= form_for @changeset, "#", [method: "post", multipart: true], fn f -> %>
  <div class="row mt-3">
    <div class="form-group col-6">
      <%= input f, :title, "Title", [class: "form-control", type: "text", placeholder: "Enter Title", required: true] %>
    </div>
    <div class="form-group col-6">
     <%= input f, :description, "Description", [class: "form-control", type: "text", placeholder: "Enter Description", required: true] %>
    </div>
  </div>
  <div class="d-flex mt-3">
   <button phx-click="create-post" phx-value="form-value">Create Post"</button>
  </div>
<% end %>

Я запутался вместо form-value, что нужно отправить, чтобы я получил правильные данные формы, которые содержат title и descriptionв моей функции handle_event.

Я пытался передать @changeset, а также f, но они посылают правильные phx-value, которые будут содержать мои title и description.

Не уверен, правильно ли реализует форму с LiveView или это нужно сделать другим способом.

1 Ответ

0 голосов
/ 09 июля 2019

Это правильный способ реализации формы с помощью Phoenix Liveview

<%= form_for @changeset, "#", [phx_submit: "post", multipart: true], fn f -> %>
  <div class="row mt-3">
      <div class="form-group col-6">
        <%= input f, :title, "Title", [class: "form-control", type: "text", placeholder: "Enter Title", required: true] %>
      </div>
      <div class="form-group col-6">
       <%= input f, :description, "Description", [class: "form-control", type: "text", placeholder: "Enter Description", required: true] %>
      </div>
    </div>
    <div class="d-flex mt-3">
      <%= submit "Create Post", phx_disable_with: "Posting..." %>
    </div>
<% end %>
...