請求書出力アプリ(超簡易)を作りました

Laravel

引き続き業務でLaravel And レガシィィィ~なシステムを触ってます。。
Laravelいいですねー
artisanコマンドでポンポンcontroller作って、サササっとコード書いたらゴゴゴゴ~って感じで動きますよね!
表題の件、下記です。Qiita転記です。

概要

毎月請求書出さないといけないけど、Webアプリで出したいなー
けどワザワザ登録するのも面倒だな。今までのフォーマット使いたいし
ということで、(?)
Laravel5.6とphpSpreadseetを使って請求書出力のWebアプリを作ってみました!

環境

CentOS 6.9
Laravel 5.6
Apache 2.2
PHP 7.2

作ったもの

ログイン不要で請求書がパパっと出せます。
こちら ⇒ http://pizza.codelike.info

やったこと

1. laravelプロジェクト作成とライブラリインストール

下記コマンドでプロジェクトを作成したあとにphpspreadseetをインストール

laravel new hoge
cd hoge
composer require phpoffice/phpspreadsheet

laravelの動作確認、下記のコマンドでビルドインサーバーでlaravel起動

php artisan serve

wellcomeページが表示されたらOK!!

2. css / jsライブラリ追加

bowerを使ってライブラリを追加しました。
npmでjquery-uiがうまく動かなかったorz

bower install jquery open-iconic jquery-ui

3. resources/views/配下にviewファイルを書く

トップページ・ヘルプ・規約ページの分けてviewを作りました。
layoutsフォルダに親viewを作っておくと、ヘッダーの情報とかトップのナビメニューがひとつに纏まるのでいい感じです。

4. routes/web.phpファイルを書く

最初はwellcomeページにインデックスが向いていますが、今回作ったコントローラーに向けて、請求書出力の時のメソッド・その他を追加しました。

Route::get('/', 'TopPageController@topPage')->name('top_page');
Route::post('/', 'TopPageController@topPage')->name('top_page');
Route::post('/', 'TopPageController@output')->name('claim.output');
Route::get('/help', function(){
    return view('help');
});
Route::get('/rule', function(){
    return view('rule');
});

5. app/Http/Controller配下のcontrollerを書く

laravelのartisanコマンドでコントローラーを作った後に編集していきました。
下記コマンドでコントローラーを作れました。

php artisan make:controller TopPageController

メソッドはトップページ表示用と請求書出力アクションの二つのみ。
表示用はviewを返すのみで請求書のほうはphpspreadsheetを使ったロジックをゴニョゴニョしました。

6. webpack.min.js を書く

laravel-mixなるものを初めて使いました。
webpackのラッパーらしいですね!
webpack自体を使ったことがなかったのですが・・・
下記のような感じで羅列して、第二引数に出力ファイルパス(ファイル名含)を書いておけば纏めて一つのファイルにしてくれました。

mix.scripts([
    'public/library/jquery/dist/jquery.js',
    'public/library/jquery-ui/jquery-ui.js',
・・・略・・・

下記でminify化せずに出力先にファイルを出力してくれます。

npm run dev

逆に本番などでminify化したい場合は下記。
これで恥ずかしいjsソースが隠せます(笑)

npm run production

所感

Laravelを業務で使い始めましたが、自分で作ることによってちょっと慣れ親しんだ感がでてきたのでよかったです:)
そのうちPDF追加したい。。
Laravel便利なので今後も何か作る時に活用していきます😄

コメント

タイトルとURLをコピーしました