はじめに
簡単に少し入力するだけで
サクッと申請書を発行できる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 申請内容 必須 入力値を出力
-
- クエリストリングにtokenを持つ場合
・入力情報はデータベースに保存する
・有効期限を設け、3日間の間のみ参照(生成)が可能とする
ルーティングと処理概要
-
/
:入力ページ兼PDF発行ページ- 入力フォームを表示(入力してsubmitを行う)
-
token
が未設定のため、GETパラメータで渡した入力値を入力値をデータベースに保存する - 2.で保存したレコードのトークンをクエリストリングに設定してindexページへリダイレクト
-
token
が設定済みのため、PDF出力処理を実行
PDF発行
- 申請書のテンプレートをスプレットシートで作る
- サーバ上に格納する
- テンプレートの上に文字をプロット(古のTCPDF/FPDIを使用)
- ブラウザでPDFを返す
※ライブラリはDomPDFも試してみたけど、
CSSの調整してるうちに飽きちゃいそうでやめました。
出力結果
URLを叩くとこんな感じでPDFが出力されます。
- URLにアクセス
- フォームに項目を入力し、発行ボタンを押す
- ブラウザにPDFが表示される
まとめ
友人とふざけるためだったり、
自分の生活を豊かにするためだったり
ネタに対するモチベーションって意外と強い説。
参考にさせていただきました、感謝