ex_admin中的自定义模板类型(Phoenix)

时间:2017-05-12 23:46:25

标签: elixir admin backend phoenix-framework

我在凤凰城使用ex_admin在后端创建了一个博客,我想覆盖我博客帖子模板的一些默认输入。

我的帖子具有以下属性:

  schema "posts" do
    field :title, :string
    field :image, :string   # will store as URL, will reference external host like S3
    field :created_on, :datetime
    field :content, :text

    timestamps()
  end 

我想做以下事情:

  1. 保持:title字段为文本输入
  2. :image
  3. 创建上传器输入
  4. 保留Phoenix created_on
  5. 默认的多下拉选择方案
  6. 为我的:content创建Quill wysiwyg(基本上放在一个定位:content文字字段的脚本中)
  7. 理想情况下,我想做这样的事情:

    defmodule MyBlog.ExAdmin.Post do
        use ExAdmin.Register
    
        register_resource MyBlog.Post do
    
        end
    
        form post do
            inputs do
                input post, :title, type: :string
                input post, :image, type: :file
                input post, :created_on, type: :datetime
                input post, :content, type: :text
            end
        end
    
        # Add a javascript hook that fires here to target the :content input
    
    end
    

    :title:image:created_on字段都显示文字输入...我注意到的唯一改变文字字段的类型是type: :password。有没有办法从inputs do列表中动态删除这些类型,或者我是否必须创建自定义模板并引用它?

1 个答案:

答案 0 :(得分:1)

首先,您通常不需要指定字段的类型。一旦text字段出现异常,因为文本和字符串字段都在模式元数据中键入为字符串。

这应该适用于您在表单上的javascript:

form post do
   inputs do
        input post, :title, type: :string
        input post, :image, type: :file
        input post, :created_on, type: :datetime
        input post, :content, type: :text
    end
    javascript do
      form_javascript()
    end
end
def form_javascript, do: """
  $(document).ready(function() {
    // ... 
  });
"""

您真的不需要使用form_javascript功能。你可以只是嵌入就可以了

    javascript do
      """
      $(document).ready(function() {
         // ... 
      });
      """
    end

但是,我喜欢将javascript分开,特别是如果它相当长。