ひとこと掲示板作成
パーフェクトPHPhttps://www.amazon.co.jp/dp/B00P0UDWQY/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1を読んでいると、6章で「ひとこと掲示板作成」を行うことになる。せっかくlaravelも同時に学んでいることだし、これをlaravelで作成しなおしてみた。
C:\xampp\htdocs\laravelapp>php --version PHP 7.1.9 (cli) (built: Aug 30 2017 18:37:35) ( ZTS MSVC14 (Visual C++ 2015) x86 ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies C:\xampp\htdocs\laravelapp>php artisan --version Laravel Framework 5.5.12
OnelinebbsController.php <?php //パーフェクトPHP6章のlaravel版 namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests\RubihuriRequest; use Validator; use Illuminate\Support\Facades\DB; use App\Http\Requests\OnelinebbsRequest; class OnelinebbsController extends Controller { public function bbs_index(Request $request) { $items = DB::table('bbs')->get(); return view('layouts.bbs',['items'=>$items]); } public function bbs_post(OnelinebbsRequest $request) { /* bbs_postでは実際の画面表示はしない。画面遷移の処理である。 最終的にリダイレクトして全体表示している。 */ date_default_timezone_set('Asia/Tokyo'); $param = [ 'name' => $request->name, 'comment' => $request->comment, 'date' => date("Y/m/d H:i:s"), ]; DB::table('bbs')->insert($param); // DB::table('bbs')->insert($param); return redirect('/onelinebbs'); } }
bbs.blade.php <!DOCTYPE html> <html lang="ja"> <head> <title>ひとこと掲示板</title> </head> <body> <h1>ひとこと掲示板</h1> @if(count($errors)>0) <p>入力に問題があります。再入力してください。</p> @endif <table> <form action="/onelinebbs2" method="post"> {{ csrf_field() }} @if($errors->has('name')) <tr><th>ERROR</th><td>{{$errors->first('name')}}</td></tr> @endif <tr><th align="left" valign="middle">名前:</th><td><input type="text" name="name" value="{{old('name')}}"></td></tr> @if($errors->has('comment')) <tr><th>ERROR</th><td>{{$errors->first('comment')}}</td></tr> @endif <tr><th align="left" valign="middle">ひとこと:</th><td><input type="text" name="comment" size="60" value="{{old('comment')}}"></td></tr> <tr><th></th><td><input type="submit" name="submit" value="送信"></td></tr> </form> </table> <table border="0"> @foreach ($items as $item) <ul> <li> {{$item->name}}:{{$item->comment}}-{{$item->date}} </li> </ul> @endforeach </table> </body> </html>
OnelinebbsRequest.php <?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class OnelinebbsRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { if ($this->path() == 'onelinebbs2') { return true; }else{ return false; } } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'name' => 'required', 'comment' => 'required', ]; } public function messages() { return [ 'name.required' => '名前は必ず入力してください。', 'comment.required' => 'コメントが必要です。', ]; } }
web.php Route::get('onelinebbs','OnelinebbsController@bbs_index'); Route::post('onelinebbs','OnelinebbsController@bbs_post');
実行結果