Phoenix Framework - 表单中的确认字段
Phoenix Framework - Confirmation field in form
今天用phoenix框架新建一个项目,添加一个singup函数。我现在的问题是我不知道如何创建和验证确认字段,例如用户密码。我没有找到与此主题相关的内容。
在我当前的代码之下,没什么特别的。
我当前的表单模板
<%= form_for @changeset, @action, fn f -> %>
<%= if f.errors != [] do %>
<!-- not interesting -->
<% end %>
<div class="form-group">
<%= label f, :username, "User name" %>
<%= text_input f, :username, class: "form-control" %>
</div>
<div class="form-group">
<%= label f, :password, "Password" %>
<%= password_input f, :password, class: "form-control" %>
</div>
<!-- How to validate this??? -->
<div class="form-group">
<%= label f, :password_confirmation, "Password confirmation" %>
<%= password_input f, :password_confirmation, class: "form-control" %>
</div>
<!-- And so on.... -->
<% end %>
我现在的型号
defmodule Project.User do
use Project.Web, :model
schema "users" do
field :username, :string
field :password, :string
timestamps
end
@required_fields ["username", "password"]
@optional_fields []
def changeset(model, params \ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
有一个名为 validate_confirmation/3
的内置验证器
def changeset(model, params \ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> validate_confirmation(:password)
end
如果您想在 @required_fields
或 @optional_fields
中使用确认字段,也可以将其作为虚拟字段添加到您的方案中,但这不是使用 validate_confirmation
所必需的:
schema "users" do
field :username, :string
field :password, :string
field :password_confirmation, :string, virtual: true
timestamps
end
今天用phoenix框架新建一个项目,添加一个singup函数。我现在的问题是我不知道如何创建和验证确认字段,例如用户密码。我没有找到与此主题相关的内容。
在我当前的代码之下,没什么特别的。
我当前的表单模板
<%= form_for @changeset, @action, fn f -> %>
<%= if f.errors != [] do %>
<!-- not interesting -->
<% end %>
<div class="form-group">
<%= label f, :username, "User name" %>
<%= text_input f, :username, class: "form-control" %>
</div>
<div class="form-group">
<%= label f, :password, "Password" %>
<%= password_input f, :password, class: "form-control" %>
</div>
<!-- How to validate this??? -->
<div class="form-group">
<%= label f, :password_confirmation, "Password confirmation" %>
<%= password_input f, :password_confirmation, class: "form-control" %>
</div>
<!-- And so on.... -->
<% end %>
我现在的型号
defmodule Project.User do
use Project.Web, :model
schema "users" do
field :username, :string
field :password, :string
timestamps
end
@required_fields ["username", "password"]
@optional_fields []
def changeset(model, params \ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
有一个名为 validate_confirmation/3
的内置验证器def changeset(model, params \ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> validate_confirmation(:password)
end
如果您想在 @required_fields
或 @optional_fields
中使用确认字段,也可以将其作为虚拟字段添加到您的方案中,但这不是使用 validate_confirmation
所必需的:
schema "users" do
field :username, :string
field :password, :string
field :password_confirmation, :string, virtual: true
timestamps
end