5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Netlify Forms】使い方や実装手順、Vue.jsで使用する方法まで

Last updated at Posted at 2020-07-08

Netlify Forms とは

流行りのホスティングサービス「Netlify」の動作するフォームを簡単に作れる機能のことです。

NetlifyはWebサイトを公開するためのサービスです。
最大限分かりやすく言うとすれば、すごく便利なレンタルサーバー。

Netlify Formsは、Netlifyの数ある便利機能のうちの1つです。

無料で使えるのか?

Netlify自体の料金

  • 転送量: 月100GBまで無料
  • ビルド: 月300分まで無料

なので基本的に無料で使えます。
カスタムドメインの設定や、SSL対応も無料で出来ます。

Netlifyの料金表

Netlify Formsの料金

  • 送信された数: 月100件まで無料
  • 送信されたファイルの合計容量: 月10MBまで無料

なので、小規模なら無料枠に収まりそうです。

https://www.netlify.com/pricing/
Netlify Formsの料金表

実装方法

具体的な実装の流れを簡潔に紹介します。

完全な静的サイトの場合

1. formタグにnetlifyを追加する

もしくは data-netlify="true" でも同様に動作します。

<form method="POST" netlify></form>

2. 入力要素にnameを追加する

複数選択可能なセレクトボックスやチェックボックスの場合は、おしりに[]を付けてあげます。

<label>お名前: <input type="text" name="name" /></label>
<label>email: <input type="email" name="email" /></label>
<label>好きな食べ物: <select name="food[]" multiple>
  <option value="apple">りんご</option>
  <option value="banana">ばなな</option>
</select></label>

以上です!
これらの実装を施したサイトをNetlifyにデプロイするだけで、管理画面から送信された内容を確認できます。

公式ドキュメント
https://docs.netlify.com/forms/setup/

Vue.jsを使っている場合

先ほどの手順に加えて、追加で対応が必要です。

1. 静的なHTMLにもformを設置する

Formsの機能を使うページであることをNetlifyに認識させるためだけに、最小限のformを設置します。
入力要素のname属性の値をVueで描画するものと揃えます。

<form name="contact" netlify netlify-honeypot="bot-field" hidden>
  <input type="text" name="name" />
  <input type="email" name="email" />
 <textarea name="message"></textarea>
</form>

もしくは、プリレンダリングのプラグインを使用する方法もあります。

2. form-nameを添えて自前でPOSTする

フォームに入力された内容と一緒に、form-nameを渡す必要があります。
form-nameには、formタグに指定したname属性の値を指定します。

これはaxiosで実装した例です。

methods: {
    encode (data) {
      return Object.keys(data)
        .map(
          key => `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`
        )
        .join('&')
    },
    handleSubmit () {
      const axiosConfig = {
        header: { 'Content-Type': 'application/x-www-form-urlencoded' }
      }
      this.axios
        .post(
          '/',
          this.encode({
            'form-name': 'contact',
            ...this.form
          }),
          axiosConfig
        )
    }
  }

公式ブログの解説記事
https://www.netlify.com/blog/2018/09/07/how-to-integrate-netlify-forms-in-a-vue-app/

Reactを使っている場合は、こちらを参照

管理画面の使い方

送信された内容を確認する

Netlifyにログイン > サイト名 > 上部のタブからFormsを選択

フォームから送信された内容はこのように表示されます。
CSV形式でのエクスポートにも対応。
netlify_form1.png

通知を設定する

Site settings > Forms > Form notifications から設定可能です。

SlackやEmailだけでなくwebhookにも対応しているので、外部サービスのIFTTTzapierを活用するとLINEやスプレッドシートに記録することも可能です。

ss2020-07-09-003320@2x.png

メール通知の件名を変更する

nameがsubjectのinputタグを追加すると、valueに指定した値が件名になります。

<input type="hidden" name="subject" value="件名" />

さいごに

実務で使用する機会があったのですが、Netlify、NetlifyForms共に使いやすかったです。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?