laravelのMysqlの文字化けを防ぐには、my.cnfの作成とdatabase.phpとdocker-compose.ymlを変える。
docker-comopse.yml
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
- './mysql/etc/my.cnf:/etc/my.cnf'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
mysql/etc/my.cnfを作成
my.cnf
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8mb4
これで日本語に変換完了。
認証機能の追加
```Laravel Breeze $ composer require laravel/breeze --dev $ php artisan breeze:install ``` 上記の二つをインストールすることで認証機能が実装できるエラーの日本語化
config/app.php
lacale => 'ja'に変更
lang配下にjaファイルを作る ※enファイルと同じ階層
auth.php
<?php
return [
/*
|--------------------------------------------------------------------------
| 認証言語行
|--------------------------------------------------------------------------
|
| 以下の言語行は認証時にユーザーに対し表示する必要のある
| 様々なメッセージです。アプリケーションの必要に合わせ
| 自由にこれらの言語行を変更してください。
|
*/
'failed' => 'ログイン情報が登録されていません。',
'throttle' => 'ログインに続けて失敗しています。:seconds秒後に再度お試しください。',
];
pagination.php
<?php
return [
/*
|--------------------------------------------------------------------------
| ペジネーション言語行
|--------------------------------------------------------------------------
|
| 以下の言語行はペジネーターライブラリーによりシンプルなペジネーション
| リンクを生成するために使用されます。アプリケーションに合うように、
| 自由に変更してください。
|
*/
'previous' => '« 前',
'next' => '次 »',
];
passwords.php
<?php
return [
/*
|--------------------------------------------------------------------------
| パスワードリセット言語行
|--------------------------------------------------------------------------
|
| 以下の言語行は既存のパスワードを無効にしたい場合に、無効なトークンや
| 新しいパスワードが入力された場合のように、パスワードの更新に失敗した
| 理由を示すデフォルトの文言です。
|
*/
'reset' => 'パスワードをリセットしました。',
'sent' => 'パスワードリセットメールを送信しました。',
'throttled' => 'しばらく再試行はお待ちください。',
'token' => 'このパスワードリセットトークンは無効です。',
'user' => "メールアドレスに一致するユーザーは存在していません。",
];
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' => [
'password' => 'パスワード'
],
];
上記を追加するとエラーの日本語化が完成
一番下のattributesは細かい部分の日本語化
bladeで先頭にxがつくのはbladeコンポーネント(各ページで使いまわせるようの部品となるページ)@extendsなどは継承のため違うもの
クラスを使うパターンと使わないパターンがある
クラスを使う方
app/views/components/クラスを使わない方
resource/views/components/validationチェック
これの居場所はinput-error.blade.php バリデーションをかけたいファイルに書き込む<x-input-error :messages="$errors->all()" class="mt-2" />
ページネーション
https://readouble.com/laravel/9.x/ja/pagination.htmlphp artisan vendor:publish --tag=laravel-pagination
MAMPのmysqlの場所
MAMP/Library/bin