インストールの概要
Composerを利用してインストールしなければならないようだ。前提条件
手順
npm --versionnpmをバージョンアップ
$ npm install -g npm
$ cd ~/git/crud_base_laravel9
$ exec winpty bash
$ php -r "readfile('https://getcomposer.org/installer');" | php
$ php composer.phar create-project "laravel/laravel=9.1.*" dev補足1
cmd /c mklink /D C:\xampp\htdocs\crud_base_laravel9 C:\Users\user\git\crud_base_laravel9
DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=crud_base_laravel9 DB_USERNAME=root DB_PASSWORD=セッションの保存先をfileからdatabaseに変更する。ファイルでなくDBにセッション情報が保存されるようになる。
SESSION_DRIVER=database
$ cd dev
$ php -r "readfile('https://getcomposer.org/installer');" | php
$ php composer.phar require laravel/ui
$ composer require laravel/ui参考:ログイン画面を作成(Laravel7版)
php artisan ui vue --auth
$ php artisan session:table
$ php artisan migrate
$ php artisan ui bootstrap
$ php artisan ui vue
npm installnode_modulesディレクトリが作成され、様々なパッケージがこのディレクトリにインストールされる。
npm run buildapp.jsとapp.cssを生成する。
public/build/manifest.json 0.26 kB │ gzip: 0.14 kB public/build/assets/app-3ea8b221.css 191.52 kB │ gzip: 27.24 kB public/build/assets/app-2c989934.js 249.17 kB │ gzip: 88.84 kB
npm run dev環境構築が目的なら、今は実行する必要がないコマンド。
//ログアウト
Route::get('/logout', 'App\Http\Controllers\Auth\LoginController@logout')->name('logout');
Auth::routes();
アクション名 | 説明 |
---|---|
index |
基本中の基本、一覧表示画面する。大抵は検索閲覧型の一覧画面になるため検索データの取り扱いが必要になる。 indexアクション内の基本的流れ
|
create |
新規入力画面を表示するだけ。新規入力画面はいわゆる新規入力フォームのことだ。 新規入力ボタンや複製ボタンがこのアクションのトリガーになる。 複製機能も実装するならこのアクションが該当するな。 |
store |
新規登録アクションになる。 新規入力画面の登録ボタンを押したときのアクションだ。 このアクションでは新規入力フォームに入力されたデータをDB保存する処理が行われる。 バリデーションは重要だ。 入力エラーがあったらDB登録せず、エラーメッセージと共に新規入力フォームを再表示。 入力に問題がなければDB登録を実行、そして一覧画面または詳細画面にリダイレクトで移動する。 |
show | いわゆる詳細表示画面のことだ。 一覧の行にある詳細ボタンがトリガーになることがある。 入力確認画面もshowアクションに含まれるかな?まあ、別のアクション名にしたほうがいいだろうが。 |
edit | 編集画面を表示するアクション。 一覧画面の各行に紐づく編集ボタンがトリガーになるだろう。 |
update |
いわゆる変更登録アクション。 編集画面の変更ボタンがトリガーになる。 編集画面の入力フォームに入力されたデータをDBに登録する処理になる。 追加か変更かという違いだけで基本は新規入力画面と同じ。 |
destroy | 削除アクションだ。 削除フラグをONにするだけとDBから消去するパターンが考えるが、destroyの意味を考えるとDBからの消去かな。 削除フラグは単にdeleteアクションとしたほうがいいかも 一覧行や詳細表示画面の抹消ボタンがトリガーになる。 |
delete | 削除フラグをONにする削除用に。 公式推奨ではないがよくあるアクション名。 一覧行や詳細表示画面の削除ボタンがトリガーになる。 |
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
validation.php
公式を参考<?php return [ /* |-------------------------------------------------------------------------- | バリデーション言語行 |-------------------------------------------------------------------------- | | 以下の言語行はバリデタークラスにより使用されるデフォルトのエラー | メッセージです。サイズルールのようにいくつかのバリデーションを | 持っているものもあります。メッセージはご自由に調整してください。 | */ 'accepted' => ':attributeを承認してください。', 'accepted_if' => ':otherが:valueの場合、:attributeを承認してください。', 'active_url' => ':attributeが有効なURLではありません。', 'after' => ':attributeには、:dateより後の日付を指定してください。', 'after_or_equal' => ':attributeには、:date以降の日付を指定してください。', 'alpha' => ':attributeはアルファベットのみがご利用できます。', 'alpha_dash' => ':attributeはアルファベットとダッシュ(-)及び下線(_)がご利用できます。', 'alpha_num' => ':attributeはアルファベット数字がご利用できます。', 'array' => ':attributeは配列でなくてはなりません。', 'before' => ':attributeには、:dateより前の日付をご利用ください。', 'before_or_equal' => ':attributeには、:date以前の日付をご利用ください。', 'between' => [ 'numeric' => ':attributeは、:minから:maxの間で指定してください。', 'file' => ':attributeは、:min kBから、:max kBの間で指定してください。', 'string' => ':attributeは、:min文字から、:max文字の間で指定してください。', 'array' => ':attributeは、:min個から:max個の間で指定してください。', ], 'boolean' => ':attributeは、trueかfalseを指定してください。', 'confirmed' => ':attributeと、確認フィールドとが、一致していません。', 'current_password' => 'パスワードが正しくありません。', 'date' => ':attributeには有効な日付を指定してください。', 'date_equals' => ':attributeには、:dateと同じ日付けを指定してください。', 'date_format' => ':attributeは:format形式で指定してください。', 'different' => ':attributeと:otherには、異なった内容を指定してください。', 'digits' => ':attributeは:digits桁で指定してください。', 'digits_between' => ':attributeは:min桁から:max桁の間で指定してください。', 'dimensions' => ':attributeの図形サイズが正しくありません。', 'distinct' => ':attributeには異なった値を指定してください。', 'email' => ':attributeには、有効なメールアドレスを指定してください。', 'ends_with' => ':attributeには、:valuesのどれかで終わる値を指定してください。', 'exists' => '選択された:attributeは正しくありません。', 'file' => ':attributeにはファイルを指定してください。', 'filled' => ':attributeに値を指定してください。', 'gt' => [ 'numeric' => ':attributeには、:valueより大きな値を指定してください。', 'file' => ':attributeには、:value kBより大きなファイルを指定してください。', 'string' => ':attributeは、:value文字より長く指定してください。', 'array' => ':attributeには、:value個より多くのアイテムを指定してください。', ], 'gte' => [ 'numeric' => ':attributeには、:value以上の値を指定してください。', 'file' => ':attributeには、:value kB以上のファイルを指定してください。', 'string' => ':attributeは、:value文字以上で指定してください。', 'array' => ':attributeには、:value個以上のアイテムを指定してください。', ], 'image' => ':attributeには画像ファイルを指定してください。', 'in' => '選択された:attributeは正しくありません。', 'in_array' => ':attributeには:otherの値を指定してください。', 'integer' => ':attributeは整数で指定してください。', 'ip' => ':attributeには、有効なIPアドレスを指定してください。', 'ipv4' => ':attributeには、有効なIPv4アドレスを指定してください。', 'ipv6' => ':attributeには、有効なIPv6アドレスを指定してください。', 'json' => ':attributeには、有効なJSON文字列を指定してください。', 'lt' => [ 'numeric' => ':attributeには、:valueより小さな値を指定してください。', 'file' => ':attributeには、:value kBより小さなファイルを指定してください。', 'string' => ':attributeは、:value文字より短く指定してください。', 'array' => ':attributeには、:value個より少ないアイテムを指定してください。', ], 'lte' => [ 'numeric' => ':attributeには、:value以下の値を指定してください。', 'file' => ':attributeには、:value kB以下のファイルを指定してください。', 'string' => ':attributeは、:value文字以下で指定してください。', 'array' => ':attributeには、:value個以下のアイテムを指定してください。', ], 'max' => [ 'numeric' => ':attributeには、:max以下の数字を指定してください。', 'file' => ':attributeには、:max kB以下のファイルを指定してください。', 'string' => ':attributeは、:max文字以下で指定してください。', 'array' => ':attributeは:max個以下指定してください。', ], 'mimes' => ':attributeには:valuesタイプのファイルを指定してください。', 'mimetypes' => ':attributeには:valuesタイプのファイルを指定してください。', 'min' => [ 'numeric' => ':attributeには、:min以上の数字を指定してください。', 'file' => ':attributeには、:min kB以上のファイルを指定してください。', 'string' => ':attributeは、:min文字以上で指定してください。', 'array' => ':attributeは:min個以上指定してください。', ], 'multiple_of' => ':attributeには、:valueの倍数を指定してください。', 'not_in' => '選択された:attributeは正しくありません。', 'not_regex' => ':attributeの形式が正しくありません。', 'numeric' => ':attributeには、数字を指定してください。', 'password' => '正しいパスワードを指定してください。', 'present' => ':attributeが存在していません。', 'regex' => ':attributeに正しい形式を指定してください。', 'required' => ':attributeは必ず指定してください。', 'required_if' => ':otherが:valueの場合、:attributeも指定してください。', 'required_unless' => ':otherが:valuesでない場合、:attributeを指定してください。', 'required_with' => ':valuesを指定する場合は、:attributeも指定してください。', 'required_with_all' => ':valuesを指定する場合は、:attributeも指定してください。', 'required_without' => ':valuesを指定しない場合は、:attributeを指定してください。', 'required_without_all' => ':valuesのどれも指定しない場合は、:attributeを指定してください。', 'prohibited' => ':attributeは入力禁止です。', 'prohibited_if' => ':otherが:valueの場合、:attributeは入力禁止です。', 'prohibited_unless' => ':otherが:valueでない場合、:attributeは入力禁止です。', 'prohibits' => 'attributeは:otherの入力を禁じています。', 'same' => ':attributeと:otherには同じ値を指定してください。', 'size' => [ 'numeric' => ':attributeは:sizeを指定してください。', 'file' => ':attributeのファイルは、:sizeキロバイトでなくてはなりません。', 'string' => ':attributeは:size文字で指定してください。', 'array' => ':attributeは:size個指定してください。', ], 'starts_with' => ':attributeには、:valuesのどれかで始まる値を指定してください。', 'string' => ':attributeは文字列を指定してください。', 'timezone' => ':attributeには、有効なゾーンを指定してください。', 'unique' => ':attributeの値は既に存在しています。', 'uploaded' => ':attributeのアップロードに失敗しました。', 'url' => ':attributeに正しい形式を指定してください。', 'uuid' => ':attributeに有効なUUIDを指定してください。', /* |-------------------------------------------------------------------------- | Custom バリデーション言語行 |-------------------------------------------------------------------------- | | "属性.ルール"の規約でキーを指定することでカスタムバリデーション | メッセージを定義できます。指定した属性ルールに対する特定の | カスタム言語行を手早く指定できます。 | */ 'custom' => [ '属性名' => [ 'ルール名' => 'カスタムメッセージ', ], ], /* |-------------------------------------------------------------------------- | カスタムバリデーション属性名 |-------------------------------------------------------------------------- | | 以下の言語行は、例えば"email"の代わりに「メールアドレス」のように、 | 読み手にフレンドリーな表現でプレースホルダーを置き換えるために指定する | 言語行です。これはメッセージをよりきれいに表示するために役に立ちます。 | */ 'attributes' => [], ];
class NekoController extends Controller{
/**
* ユーザーをアプリケーションからログアウトさせる
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
\Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
routes/web.phpにログアウトのパスを記載
Route::get('logout', 'App\Http\Controllers\NekoController@logout');
あとは任意のビュー(blade.php)にて下記のような記述をするだけ。
<a href="logout" class="nav-link text-light">ログアウト</a>
$query = DB::table('sales');
$query = $query->orderBy('id');
dump($query->toSql());
$query = DB::table('sales')->leftJoin('clients', 'sales.client_id', '=', 'clients.id');
<select name="status" class="form-control form-control-lg"> @foreach ($salesStatusList as $status => $status_name) <option value="{{ $status }}" @selected(old('status') == $status)> {{ $status_name }} </option> @endforeach </select>