鶏口牛後な日々

なんでも作れるエンジニアを目指して奮闘中、ブログは発散中

PHP Laravel

毎回キャッシュを読み込まずにページをロードするようにしたい

CSSやJavaScriptで、変更したのに、変更がきかない! あああああぁあ〜 なぜ〜〜〜〜〜えぇぇ〜 という思いをした方も多いのではないでしょうか。 エンジニアあるある。 そのたんびに、キャッシュを消して再読み込み! とかするわけですけれど、エンジニアは…

Laravelのセレクトボックスでバリデーション戻ってきたとき前入力した内容をold()メソッドで表示したい

bladeの @if ディレクティブで書く かっこいい書き方はないようで、@ifディレクティブを使って以下のように書くとできました。 <div class="form-group"> <div class=required>必須</div> <label for="gender">性別を選択してください</label> <select name="gender"> <option value="male" @if(old('gender')=='male') selected @endif>男性</option> </select></div>

PHP Laravelのアップデート画面でcheckboxを操作する

チェックボックスやセレクトボックスの制御は、色々と便利なメソッドが用意されているLaravelでも案外面倒 PHP Laravelで、一度登録した情報の編集画面を作るときに、checkboxやセレクトボックスの挙動を指定するのが、思った以上に面倒だったので、メモして…

PHP Laravelで、電話番号の桁数をざっくりチェックするバリデーションを書きたい

厳密に指定する場合は、カスタムバリデーションを書いてください。 特に、対象となる電話番号の国が絞られる場合は、その国のルールに合わせて厳密に書く方がいいと思います。 ただし、全世界を対象とする場合、8桁から11桁、で、数字で構成されている、とい…

PHP Laravelで日付を日本語式(yyyy年mm月dd日)で表示したい

Laravelというか、これは普通にPHPの関数を使うだけなのですが、 date('Y年m月d日', $date); とすればできます。 $date は日付型出ないといけない。

Laravelでリレーション関係にある親テーブルをアップデートする時、小テーブルも同時にアップデートさせたい

リレーションシップ、まだ慣れていません。 でも、よくあるユーザー情報のアップデート処理するときに、ユーザーに紐づく別テーブル、例えば ユーザーの好きなもの(favorite) という他のテーブルがあったとします。 これも同時にアップデートしたい、という…

PHP Laravelの登録情報のアップデート画面で、情報が変更された時だけsaveする

ユーザー情報など、つらつらとたくさん保存した内容を、編集画面で編集させるということはよくあると思います。 それを保存する際、新しいuserのインスタンスを作って、いちいちまた入れて、一個ずつまた保存するというのは、ソースも多くなりますし、データ…

Laravelのedit/updateフォームでvalidationから1レコードだけ除外する

ユーザー情報の登録について、アップデートしたい場合に、登録時に例えばメールアドレスにバリデーションで unique をつけていた時、アップデート時は、そのメールアドレスはすでにその人のレコードではあるので、ユニークバリデーションから除外したい時っ…

Laravelのedit/updateフォームで取得したデフォルト値を表示しつつ、バリデーションがかかったらold()メソッドで入力した値を表示したい

登録した情報のedit画面では、一度登録した内容をまずは取得してviewに返して表示し、それが変更されたらdatabaseに保存するという流れを取りますよね。 この時、取得した内容をinputに入れ込みつつ、バリデーションがかかったらold()で内容を再表示してほし…

Laravelのedit/updateフォームでなぜか$errorsがundefinedになる

状況説明 ユーザー登録をすれば、ユーザー情報変更するのもお決まりですよね。 そのフォームを作ろうとして、入力後にはバリデーションのチェックもするので、初期入力時のフォームをそのまま転用しようとコピーしたところ、バリデーションもちゃんと聞いて…

Laravelで日付の項目のフォーマットを直したい

日付項目 生年月日などの日付項目はユーザー登録などで定番ですね。 databaseと、表示する形式が違うことも結構あるので、コントローラーのメソッドの中で、viewに返すためにフォーマットを変えたいと思いました。 PHPのメソッド format() を使う 具体的には…

AjaxとMySQLとPHP Laravelで郵便番号から住所検索するボタンを実装する

全体像 めちゃめちゃ大まかには、HTML→データベース→PHP Laravel→JS の順で、それぞれ用意していく必要があります。 もう少しブレイクダウンします。↓ HTMLにフォームを用意し、郵便番号入力欄と住所入力欄と検索ボタンを作る MySQLに、郵便番号と住所のテー…

PHP LaravelとHTMLのinput type="file"タグで複数のファイルを同時にアップロードしたい

私の場合は、画像を最大4枚同時にアップロードし、ストレージに保存するという操作を行いたいと思ったときに課題にぶつかりました。 まず、input type="file"タグは、一つのタグにつき1つしかアップロードできないのが基本です。 multiple="multiple" という…

PHP Laravelで配列をstringに変換したい

これはLaravelではなく、PHPの関数ですが、serializeというのが使えそうです。私は、dd()でダンプして、デバッグで見たい!というときに、arrayだとエラーになるので、stringにしてくれ〜と思ったときに探しました。使い方は簡単。引数に変換したいarrayを入…

Laravelでvalidationがfailした時にMethodNotAllowedHttpExceptionが出まくる(初心者向け)

Laravelで本格的にプログラム書くようになって1ヶ月ほどの初心者です。これ、めちゃめちゃハマりました・・・stackOverflowやLaracast、Qiitaあたりの記事を読み漁りましたが、解決せず。結論としては、このエラーはバリデーションは関係なくて、リダイレク…

Laravelでデバッグのために情報を画面に出力したい(javascriptのconsole.logみたいなことがしたい)

javascriptだと、console.log()で何かとブラウザのコンソールに出力して確認作業しますよね。 こんな感じのことをLaravelでやるのはどうするのかな? と思って調べました。基本は以下で良さそうです。 とにかくその場で見たい時 dd($変数);ddは、dump dieの…

PHP Laravelでリクエストが通らずbladeが表示されないときはCSRFトークンを忘れている可能性あり

Laravel初心者です。 以下のような、超簡単なrouteを書いてみたのに、なぜかエラーが出てしまうという事態に見舞われました。 Route::post('/index', function() { return view('index'); }); 出て来たエラーはこれです。 Throw a method not allowed HTTP e…

HTMLのmetaタグの呪文について一応理解するためのメモ

PHP Laravelのデフォルトで入っている、welcome.blade.phpを使い回しするのですが、metaタグによくわからない呪文が入っていて、あとで聞かれた時のために一応調べたのでメモしておきます。呪文は以下の二種。 <meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"> 1つ目、http-equiv="X-UA-Compatible" ウンタ</meta></meta>…

PHP Laravelエラー集

ArgumentCountError: Too few arguments to function 0 passed and exactly 1 expected これは、「引数、つまりfunction()のこのカッコ内に書くものが、足りませんよ〜」というエラー。 function(引数A, 引数B)と書いているのに、引数Aしか渡していなかった…

phpUnitテストの準備

テスト用のDBを準備する(DBを作成し、laravelユーザーがアクセスできるように権限付与する) テスト用のDBの設定を.envに書く、または、.env_testを用意する php artisan make:test でファイルを作成する factory(seederのようなもの)を作る factoryを呼…

ポカミスリスト(個人的備忘録)

気づいて、ウワーーーー自分が恥ずかしい! というミス、ありませんか? すごく悔しくて、オーーーイ! とミスに対して(自分に対して?)ツッコミを入れざるを得ないくらいのやつです。もう絶対にやりたくないので、どうしたらなくなるかな? と思って、ち…

PHPで、FatalThrowableError Parse error: syntax error, unexpected 'if' (T_IF) が出る

これは、よーく出てくるエラーですが、ifのかっこをどんだけ確認しても特に問題なし・・・というありがちらしいパターンだったみたいです。 答えは、ifの前の行で、セミコロンをつけ忘れてる、というものでした。今後もまた出すだろうから、記憶にとどめてお…

php laravelを習いたてなんだけど、手足を縛られて迷路を歩けと言われている気分

php laravelを教えてもらってるものです。 この前までは、ベタ打ちのphp、しかもオブジェクト指向じゃないやつをやってました。 そちらはまぁ関数覚えなくてはいけないとしても、結構英語書くくらいに言語を解してかけていた気分になっていました。 これは楽…

remiというyumリポジトリを使ってPHPをインストールしている場合のPHPバージョンアップデート方法

以下、将来同じことがあった時のための備忘です。 PHP を 7.0 から 7.1 にアップデートする方法ですが、remi という yum リポジトリを使って PHP をインストールしている場合は、以下の手順でアップデートする。 まずは `/etc/yum.repos.d/remi-php70.repo` …

Illuminateフォルダって一体全体どこにあるのやら? (PHP Larval 5.4)

useして継承するとき、自分で作ったフォルダはプロジェクトフォルダ直下にあるのに、Illuminateはフォルダ直下にありませんよね。。。 どこなんだよ!! 出て来て、イルミネイトさん!!! 以下にいます。 vender > laravel > framework > src > Illuminate …

Laravelで使うユーザーをmysqlで作る

Laravelからアクセスするユーザーをmysqlで作ります。 敢然美貌です。 まず、terminalを開いて、rootユーザーでログインします。 databaseとかuserを作れるのは、rootのみです。 なので、データベースを作る場合は、rootでログインして作りましょう。 ユーザ…

PHP Laravel Testで、たくさんあるメソッドのうち1つだけを実行したい

Laravelでテストクラスで、1画面につき1クラス(=1ファイル)と分けて書いているとします。 一度テストを `phpunit <テストの.phpファイル名>` とすると、そのファイルに入っているすべてのメソッドが順々に実行されます。 dataproviderなどで、データを…