flabaka blog


Laravel form builderを使ってみる(1)

Laravel form builder

Laravel form builderを使ってみたくなったので、あれこれ試しているところです。

参考にさせて頂いた記事

必須項目はrequired

必須項目に設定したい場合は、requiredを。

->add('title', Field::TEXT, [
                'label' => '記事のタイトル',
                'rules' => 'required|alpha'

こんな感じに設定すると、必須項目でアルファベットのみOKという設定が出来る。

複数設定した場合に、エラーメッセージの切り替えは…

rulesを複数設定したい場合

->add('title', Field::TEXT, [
                'label' => '記事のタイトル',
                'rules' => 'required|alpha|min:10'

入力が、アルファベットのみと10文字以上設定してくださいという設定が出来る。

アルファベットを5文字打った状態で、フォーカスを移動させると、フォームが赤枠で囲まれたままになる。

Validation

アルファベットのみはクリアしているんだけど、10文字以上設定をクリアしていないので、エラー(赤枠)になっているんだけど、エラーのメッセージは、「記事のタイトルはアルファベットのみがご利用できます。」のまま。

少なくとも10文字以上に長くしてください(現在5文字です)。というメッセージになって欲しいんだけど…

アルファベットを5文字→10文字に変更して、フォーカスを移動させると、(rulesを2つともクリアしているので)赤枠は無事消えてくれる。

rulesを複数設定すると、validationは切り替わってくれるみたいだけど、メッセージは自動で切り替わってくれないのかなぁ…

php artisan migrateでハマる

php artisan migrateでハマる

migrateしたら、エラーが出た。

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

前も同じことをやったんだけど、どうやって対処したら忘れたので、メモ。

参考にさせて頂いた記事

foreign key

foreign keyを設定する箇所のコードが間違っていた。

$table->bigIncrements('id');
$table->unsignedInteger('user_id');

この様に書いていたので、エラーに。

foreign keyを設定する箇所のコードが間違っていた。

$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');

こうすることで、エラーが出なくなりました。

Laravel 5 Extended Generators

make:migrationする際に、オプションを設定出来ないのかな? と思ったので、調べてみると…

requireをして、app/Providers/AppServiceProvider.phpに追記して、以下のコードを実行。

php artisan make:migration:schema create_posts_table --schema="user_id:unsignedBigInteger,title:string"

作成されたコードを見てみると、

public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedBigInteger('user_id');
            $table->string('title');
            $table->timestamps();
        });
    }

Usage on Laravel 5.5ってなっているからだと思うんだけど、idがbigIncrementsではなく、incrementsに…

他にも方法はないか、調べてみよう!

fakerを日本語設定にする

fakerで日本語を使える様に設定を変更する

cofig>app.phpを開いて、言語設定を日本語に変更する。

// 'faker_locale' => 'en_US',
'faker_locale' => 'ja_JP',

ダミー文字を入れる場合は、こんな感じで使ってあげる。

$faker->realText();

日本語設定のフォルダは以下にある。

vendor>fzaninotto>faker>src>Faker>Provider>ja_JP

Emmetで複数のクラスを設定する方法

Bootstrap4で複数のクラスを設定したい場合

div.container py-4

これをEmmetで展開すると、

div.container <py-4></py-4>

上記の様になってしまう…

div.container.py-4

この様に変更して、展開してあげると、

<div class="container py-4"></div>

と、期待通りに表示される。

ど忘れしていたので、メモ。

参考にさせて頂いた記事

Laravel MixとGulpでSassを試してみる

ファイルの展開の違い

font-weight: normal;
font-weight: bold;

こんなscssファイルがあった場合、Laravel Mixのnpm run prodでコンパイルをすると、

font-weight:400;
font-weight:700;

と展開される。

Gulpでコンパイルした場合は、normal、boldのまま。

ソートしてくれる

footer,img,ul,li {

Gulpだと上記のまま展開されるけれども、Laravel Mixでコンパイルすると、

footer,img,li,ul {

のように、アルファベット順にソートしてくれるみたい。

あとGulp(compressedモード)を使ってコンパイルした時よりも、若干ファイルサイズを抑えることが出来るっぽい。

コンパイル速度

Laravel Mixは、Gulpに比べると、コンパイル速度は遅い。

Gulpでコンパイルした例

[12:49:14] Using gulpfile ~/sass/gulp_test/gulpfile.js
[12:49:14] Starting 'default'...
[12:49:14] Finished 'default' after 30 ms

Laravel Mixでコンパイルした例

DONE  Compiled successfully in 669ms                                   12:52:57
Asset      Size  Chunks             Chunk Names
src/style.css  67 bytes       0  [emitted]  mix

参考にさせて頂いた記事