Laravel 5.7 フォーム(form)からPostする

Laravel 5.7でフォームからPostしてみます。
まず、resources/views配下の*.blade.phpから編集していきます。
formのactionは、そのまま、遷移先のパスを指定します。
例えば、topへの画面遷移なら action=”/top” となります。action=”account/index” としてしまうと、相対パスで遷移するので注意が必要。
@csrfを入れないをエラーが出るので注意が必要。

<form action="/account/index" method="post" id="form1">
      <table id="tbl">
        @csrf        
        <tr>
          <th>ログインID</th><td><input type="text" name="login_id" size="40"  value=""></td>
        </tr>
        <tr>
          <th>権限</th><td><input type="text" name="role" size="40" value="" v-model="message"></td>
        </tr>
        <tr v-if="message">
          <th>ほげ</th><td><div id="app"><input type="text" name="hoge" size="40" value="" ></div></td>
        </tr>
        <tr v-if="message">
          <th>ほげ</th><td><div id="app"><input type="text" name="hoge" size="40" value="" ></div></td>
        </tr>
        <tr v-if="message">
          <th>ほげ</th><td><div id="app"><input type="text" name="hoge" size="40" value="" ></div></td>
        </tr>
        <tr v-if="message">
          <th>ほげ</th><td><div id="app"><input type="text" name="hoge" size="40" value="" ></div></td>
        </tr>
      </table>      

      <div class="button_wrapper remodal-bg">
         <button type="submit" value="送信" id="square_btn" onClick="location.href='#modal'">登録</button>
      </div>
      </form>

つづいて、ルーティング
/routes/web.php を編集していきます。
formでpostする場合はRoute::postとします。http requestの場合はgetでした。

Route::post('/account/index', 'AccountController@store');

AccountController.php
App\AccountでモデルのAccount.phpを呼び出します。
上記で記載の通り、getの場合は public function index、postの場合はstore(Request $request)と書きます。

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Account;

class AccountController extends Controller
{
    //
    public function index(){
    	return view('account');
    }

    public function store(Request $request){
    	$account = new Account([
    		'login_id' => $request->get('login_id'),
    		'role' => $request->get('role'),
    		'hoge' => $request->get('hoge'),
    		'hoge' => $request->get('hoge'),
    		'hoge' => $request->get('hoge'),
    		'hoge' => $request->get('hoge')
    	]);
    	$account->save();
    	return view('account');
    }
}

Account.php
fillableでカラムを定義します。

class Account extends Model
{
    //
    protected $table = 'account';
    protected $fillable = [
    	'login_id',
    	'hoge',
    	'hoge',
    	'hoge',
    	'hoge',
    	'hoge'
    ];
}

select * from account;で、データが挿入されたか確認します。
OKのようです。割といけましたね。

insertでも読み込み($data::all();)でも、どちらもmodelを読み込んで、new hogeとクラスを作っているところは共通です。deleteとupdateはやってませんが、雰囲気は掴めてきたのではないでしょうか。

さて、次はどうするか?
まずinsertの仕組みを全部つくって、データを入れていって、その後、databaseからの読み込みでしょうか。ログイン、ページング、セッションなどはまだ先ですね。データの挿入のところかやっていきましょう。結構時間かかるなー