Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Laravel5.6で請求書出力アプリを作った

概要

毎月請求書出さないといけないけど、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ページにインデックスが向いていますが、今回作ったコントローラーに向けて、請求書出力の時のメソッド・その他を追加しました。

web.php
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自体を使ったことがなかったのですが・・・
下記のような感じで羅列して、第二引数に出力ファイルパス(ファイル名含)を書いておけば纏めて一つのファイルにしてくれました。

webpack.mix.js(一部)
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を業務で使い始めましたが、自分で作ることによってちょっと慣れ親しんだ感がでてきたのでよかったです:smile:
そのうちPDF追加したい。。
Laravel便利なので今後も何か作る時に活用していきます:raised_hand_tone1:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
17
Help us understand the problem. What are the problem?