view周り
ユーザー認証周りのコード
php artisan make:auth
laravel6,7系だと上記のコードは使用できない
$ composer require laravel/ui
$ php artisan ui vue --auth
代わりに上記のコードを使用する
JavaScriptのパッケージをインストールしてコンパイルするために以下のコードを実行する
$ npm install && npm run dev
テーブルの作成
$ php artisan make:migration create_tablename_table
テーブルの作成してup関数に追加したいカラムなどを記載
down関数に削除したいカラムなどを記載する
作成した後はmodelと関連づけないといけない
モデルの作成
$ php artisan make:model モデル名 -m
$ php artisan migrate
モデルには命名規約がありテーブル名は複数形で命名しないといけなくモデル名にはテーブル名の単数形でないといけない
1対多 hasMany('App/Post');
逆 belongsTo('App/User');
1対1 hasOne
それぞれApp/モデル名っぽい
呼び出された時の処理
app/Http/Middleware/Authenticate.php
use Illuminate\Support\Facades\Auth;
class Authenticate
{
public function handle($request, Closure $next)
{
if (!Auth::check()) { // 非ログインはログインページに飛ばす
return redirect('/login');
}
return $next($request);
}
}
を作成したapp/Http/Middleware/Authenticate.phpに記述することでログインしていなかったらログイン画面に遷移する
ルートの設定
/routes/web.php
Route::resource('表示したいURL', 'コントローラー名');
php artisan route:listで表示できるコントローラーの一覧が出てくる
コントローラーの作成
$ php artisan make:controller コントローラー名
もしrouteをresourceで書いているなら
$ php artisan make:controller --resource コントローラー名
/app/Http/Controllers/作成したControllerファイル
viewを表示したい時
return view('viewのフォルダ名.bladeより上のファイル名')
view
親となるviewファイルを1つ作成する
私はviews/layouts/index.blade.phpにしました。
子となるフォルダを作成します。これはコントローラーに指定されているviewファイル、子となるファイルにはこのように記述することで、親のファイルの記述をそのまま子にも反映されるようになります
layouts/index.blade.php
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Example</title>
</head>
<body>
<div class="container">
<h1>親のページです</h1>
@yield('content')
</div>
@yield('footer')
</body>
users/index.blade.php(呼び出し側)
@extends('layouts.index')←layoutsフォルダの中にあるindexフォルダ呼び出し
@section('content')←indexフォルダのなかのcontentをのところに記述されるようになる
<h1>子のページです</h1>
@endsection←終了
コードをスッキリさせることが可能となる
viewにデータベースの内容を表示したい
controller側の処理
UsersController
// 使用するテーブルの記載
use App\User;
public function index()
{
// $usersにUserテーブルにある全レコードを格納
$users = User::all();
return view('users.index', compact('users'))
}
//compactは変数名と名前が一致すると自動的に変数として扱ってくれる
view側の処理
index.blade.php
@if($users)
@foreach($users as $user)
<p>{{ $user->id }}</p>
<p>{{ $user->name }}</p>
<p>{{ $user->email }}</p>
@endforeach