1
0

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.

Laravelでサクッと申請書を出力するネタWebサービスを作ってみた

Posted at

はじめに

簡単に少し入力するだけで
サクッと申請書を発行できるWebサービスを作った

経緯

とある友人がすぐ人に飯を奢らせようとしたり、逆に人に飯を奢らされそうになっていて
「管理が大変そうだなぁ」と思い、
どうせなら申請書で管理しては如何かと申請書をサクッと発行できるアプリを作ってみた。

環境構築

環境 概要 詳細
インフラ Lightsail LAMPインスタンス1G
ドメイン お名前.com ひみつ
バックエンド PHP Laravel 10
フロント PHP Laravel Blade

サーバ

プライベートは専らXserverで定額課金の民。
従量課金であるAWSはまだ怖い🥺
でもAWSもちょこっと使ってみても良いかな。。。

ということでサーバ周りは、
以前WordPressの業務で触ったことのあるLightsailのLAMP環境(PHP8.1)にしてみた。

定額の安心感たるや。

ドメイン

お名前.comで破格の1円で仕入れたドメインを使っちゃう。
優しいのでSSL化の対応までしています。優しい。

バックエンド&フロントエンド

オラァ、Laravel一択だで💪💪💪💪
フロント・・・?なにそれ美味しいのかしら
男は黙って"""Blade""""🔪

補足

ワァッ...!Docker環境構築してるうちに熱が冷めちゃった...!
なんてことを防ぎたかったので今回は直でリリース環境を構築。
PHP Stormの同期とGithubでいい感じにする見切り発車!

なので、リリース後もアプリが触れなかったり、
Basic認証になったりすることがあります。ゆるして。

仕様

  • URL:/のみのページ構成とする
    • クエリストリングにtokenを持つ場合
      • token一致するかつ有効期限内(3日間)の申請書を出力する
      • PDFデータは保存せず、都度出力とする
    • クエリストリングにtokenを持たない場合
      • 以下のパラメータを指定

        クエリパラメータ 内容 入力 出力
        approver 承認者 任意 (入力された場合のみ)入力値に「殿」を末尾に付与して出力
        applicant_department 申請者所属 任意 (入力された場合のみ)入力値を出力
        applicant_name 申請者名 必須 入力値を出力
        application_title 申請概要 必須 入力値を出力
        application_content 申請内容 必須 入力値を出力

・入力情報はデータベースに保存する
・有効期限を設け、3日間の間のみ参照(生成)が可能とする

ルーティングと処理概要

  1. /:入力ページ兼PDF発行ページ
    1. 入力フォームを表示(入力してsubmitを行う)
    2. tokenが未設定のため、GETパラメータで渡した入力値を入力値をデータベースに保存する
    3. 2.で保存したレコードのトークンをクエリストリングに設定してindexページへリダイレクト
    4. tokenが設定済みのため、PDF出力処理を実行

PDF発行

  1. 申請書のテンプレートをスプレットシートで作る
  2. サーバ上に格納する
  3. テンプレートの上に文字をプロット(古のTCPDF/FPDIを使用)
  4. ブラウザでPDFを返す

※ライブラリはDomPDFも試してみたけど、
 CSSの調整してるうちに飽きちゃいそうでやめました。

出力結果

URLを叩くとこんな感じでPDFが出力されます。

image.png

  1. URLにアクセス
  2. フォームに項目を入力し、発行ボタンを押す
  3. ブラウザにPDFが表示される

まとめ

友人とふざけるためだったり、
自分の生活を豊かにするためだったり
ネタに対するモチベーションって意外と強い説。

参考にさせていただきました、感謝

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?