20210604のPHPに関する記事は11件です。

マイグレーションの実行

マイグレーションの作成 $php artisan make:migration create_posts_table でcreate_posts_tableを作成 public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('name',20); $table->integer('member'); $table->string('title')->nullable(); $table->text('message')->nullable(); $table->string('grade')->nullable(); $table->string('comment')->nullable(); $table->timestamps(); }); } 上記を記載 投稿画面を作りたかったので 'title'と'message'は必須!! 投稿画面に募集人数の項目も作りたかったので $table->integer('member'); を追記。これで正しいのかわからないけど....。 あとはマイグレーションを実行するだけ! $php artisan migrate 今日はここまで! 明日は投稿機能を作っていく!!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

自分だけのCookbookを作ろう

プログラミングの上達にはアウトプットが大事 プログラミングの上達はとにかくアウトプットです。 私自身も、常に、 「実現したい機能がある→Googleで調べる→実装する(エラー出るのでトライアルアンドエラー)→やっと実現できる→忘れないようにブログにメモ」 という流れ。 自身の備忘録を目的に書いていますが、それがプログラミング技術の向上につながってるなぁと常々実感しています。 そして積み上がった記事は自分だけのCookbookになりました。 アウトプットって大事。 記事を残しておけば、自分のためにもなるし、他の人のためにもなるし、誰も損しません。 まぁ、Qiitaの目指してるところと同じです。 初心者こそアウトプットが大事 当然初心者こそプログラミングの上達をしたいでしょうから、なおのことアウトプットが大事です。 その日に学習したものをどんどんアウトプットしましょう。 Console.log('Hello, World!'); Qiitaだとクソ記事増やすなと怒られる といっても、上記のような「JavascriptでHello World!を出力する方法」なんて記事をQiitaに書いたら、「クソ記事増やすな」とか怒られます。公式に怒られるわけじゃないと思います。怒る人もいるというだけだと思いますが。 とはいえ、公式ガイドラインも「エンジニアにとって再利用性・汎用性の高い記事を書こう」、「エンジニアに有益な情報をもたらす記事を投稿しましょう」と謳っているので、初心者が今日学習したHello, Worldを記事にするということをQiitaが望んでないと思うことは間違ってなさそうです。 フリーのブログはプログラミング記事を書きにくい となると、自分でレンタルサーバーとかでWordpress使ってブログ立ち上げるか、フリーのブログサービス使うかっていう2択になるんですが、初心者がいきなりWordpressはハードル高いしお金もかかる。 じゃぁ、フリーのブログ一択になりますが、フリーのブログでプログラミング記事書きたいとは思いませんしおすすめしません。コード部分と文章部分を見やすく分けられないし、激しく読みにくいし、あとで「あの記事どこだっけ?」って探すのが非常に探しにくいし。 ってことで、自分のために記事を書くためのサイトを立ち上げました。 Qiitaの崇高な理念は激しく賛同しますし、Qiitaにこれまでなんども助けてもらいました。 ただ、Qiitaでは「他の人のために記事を書こう」ってことになっているので、クソ記事増やすなとか怒られたりするわけです。 つまり100%自分のために記事を書いていいサービスなら怒られないわけです。そして、結果的にそれが誰かのためになることがあるのならハッピーです。 そんな思いから新しいWEBアプリをたちあげました。 名前はownCookbookです。 コンセプトは、あなたの あなたによる あなたのための Cookbookを作ろうです。 私もこれまで色んなCookbookにお世話になってきました。初めて買ったCookbookは、「Rubyレシピブック 268の技」です。他にもBashやらC#やらPythonやら、色々本棚に並んでいてお世話になっています。Cookbookは偉大です。 そんなCookbookをあなた自身で作り上げればいいんです。プログラミングの学習をしながら、あなた自身のCookbookを作り上げましょう。 プログラミング技術も向上できるし、将来忘れたときにすぐ見返せるし、もしかしたら誰かの役に立つかもしれないし、もしかしたら将来書籍にまとめられるかもしれないし。一石四鳥くらいあります。 ownCookbookのいいところ Qiitaだととっちらかる記事がBookごとにまとめられる Qiitaでも記事を書きまくってると、「あの記事どこだっけ?」と、特定の記事を探したいときに、中々すぐに目的の記事にたどり着けません。 Pythonごととか、PHPごととか、今作ってるアプリごととか、色んな本を作ってそこに記事を綴っていけます。 Markdownで記事を書ける Markdownエディタを採用しています。レイアウトもQiitaを参考にしているのでQiita使ってる人はとっつきやすいと思います。 記事の順番を簡単に入れ替えられる Book内の記事の順番は後でドラッグアンドドロップで簡単に入れ替えることができます。なので、順番を気にせずに思いついたことから記事を書いていけます。 シェアが簡単 自分のためのCookbookとはいえ、知ってもらうことも大事。TwitterやFacebookなどに簡単に記事を共有することができます。 完全フリー 完全無料です。いつでも退会できます。 Let's try! ということで、使って損することはないので是非試してみて下さい。 フィードバックお待ちしております。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】中間テーブルに値を追加・更新する方法

実現したいこと 中間テーブルに値を追加・更新する。 タグ機能を作る際に、プロジェクトテーブルとタグーテーブル紐付ける際に 中間テーブルを作り、値を追加・更新することができたので、紹介します。 テーブル設計 タグテーブル id name 1 Javascript 2 PHP プロジェクトテーブル id title 1 フロントエンドを学習しよう 2 バックエンドを学習しよう 中間テーブル(プロジェクトタグテーブル) id tag_id project_id 1 1 1 2 1 2 3 2 2 中間テーブルはこのように、テーブ同士が多対多の関係の時に必要になります。 中間テーブルに値を追加する方法 中間テーブルに値を入れるためのステップ テーブルのリレーションの設定 中間テーブルにアクセスし、値の追加 1. テーブルのリレーションの設定 タグのモデルでプロジェクトと紐付けます。belongsToManyは多対多のリレーション 時に使います。これで中間テーブルにアクセスするための準備は完了です。 public function project() { return $this->belongsToMany(Project::class); } 2. 中間テーブルにアクセスし、値の追加 実際に値を追加します。値を追加する場合はattach()を使います。 まず、どのプロジェクトにタグを紐ずけるか、設定します。 今回は、projectのid:1にタグid:1を設定し、attachメソッドで追加します。 $project = Project::find(1); //idが1番のプロジェクトを取得します。 $project->tags()->attach(1); //プロジェクトid:1にタグid:1を追加します。 中間テーブルを確認すると下記のようになります。 id tag_id project_id 1 1 1 このように、中間テーブルに値を追加できます。 中間テーブルの値を更新する場合 更新したい場合は、syncメソッドを使います。 syncメソッドの仕組みは値の削除、追加を行います。 今回の例なら、project_id:1にtag_id:1が登録されています。 syncを実行することで、tag_id:1を削除します。そして、$project->tags()->sync(2); としているので、project_id:1のtag_id:に2を追加します。 なので、attachを使わなくても、追加、更新はsyncでできてしまうのです。 $project = Project::find(1); //idが1番のプロジェクトを取得します。 $project->tags()->sync(2); //中間テーブルのproject_id:1のtag_idを更新 中間テーブルを確認すると下記のようになります。 id tag_id project_id 1 2 1 まとめ 中間テーブルへの値の追加はattach()メソッド、値の更新はsync()メソッド。 attach()を使わなくても、syncメソッドは追加、更新ができる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP use演算子を用いたエイリアス作成で指定クラス名とは別名でエイリアスを作成する(asを使う)個人メモ

目的 use演算子を用いたエイリアス作成時にクラス名とは異なる名前でエイリアスを作成する方法をまとめる 情報 下記のように記載することでクラスのエイリアスを作成する。 use App\Repositories\UserRepositoryInterface; 上記use演算子が記載されたクラスで作成されたエイリアスのクラスを用いて処理を実行するときはUserRepositoryInterfaceが使用される。 方法 下記のようにエイリアス作成時にasを用いて記載することで実際のクラス名とは別名のエイリアスを作成することができる。 use App\Repositories\UserRepositoryInterface as UserRepository;
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

fetch(PDO::FETCH_ASSOC) でvar_dumpしたらNotice: Array to string conversionがでた

fetch(PDO::FETCH_ASSOC) でvar_dumpしたらNotice: Array to string conversionがでた際の対処の記録 $result = $res3->fetch(PDO::FETCH_ASSOC); var_dump("sqlの結果:".$result); PHP Notice: Array to string conversion var_dumpの結果 'sqlの結果:array' Notice: Array to string conversionとは Notice: Array to string conversion は「配列が文字列に変換」されてしまうという趣旨の警告メッセージ。 原因別に異なる対処が必要となる。 今回はimplodeを使用して配列を展開した。 var_dump("sqlの結果:".implode(',',$result)); 結果 'sqlの結果:7' (length=16) 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP ファイルの記述、読み込み、追加

sprintf sprintfを使用すると書式を整えることができる!! ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 例 <?php $date = sprintf('%04d年 %02d月 %02d日', 2021, 6, 4); print($date); ?> →2021年 06月 04日 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー %04d年は、何を指しているか %→パラメータの数 今回は2021、6、4の3つに分けている 0→何もない場合は何でを表示するか 4→表示する桁数 【2021年は4桁、 06月は2桁、 04日は2桁】 d→数字を表示する 文字の場合であればsを入れる file_put_contents ファイルの書き込み ファイルに内容を書き込むことができる!! -------------------------------------------------------- 例 <?php $success = file_put_contents('../../news_data/news.txt', '2021-06-04 本日は雨です'); if($success){ printf('ファイルへの書き込みができました'); }else{ print('書き込みに失敗しました'); } ?> →if文の出力結果で、書き込みできたかどうかわかる。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー file_put_contents('../../news_data/news.txt', '2021-06-04 本日は雨です'); 別のフォルダーにファイルを作成して、記述をしている! news_dataのフォルダに指定して、その中にファイルを作成して内容を記述 file_get_contents ファイルの読み込み/内容の追加 フォルダとファイルの指定をして、内容を読み込む ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $news = file_get_contents('../../news_data/news.txt'); print($news); これでファイルの内容を読み込める。! readfile('../../news_data/news.txt'); これも同じでファイルを読み込める! *printはいらない ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ファイルに内容の追加 $news = file_get_contents('../../news_data/news.txt'); $news .= "2021-06-01 記事を投稿しました\n"; file_put_contents('../../news_data/news.txt',$news); print($news); 【$news . = この記述で$newsの変数に、ファイル内容を追加する!】 読み込みだけなら、readfileだけで簡単にできる!!!!!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[PHP]staticメソッドとstatic::に関するメモ

はじめに この記事はプログラミング初学者による備忘録用の記事であり、また、少しでも他の初学者のお役に立てればと思い書いています。 今回は、staticメソッドとstatic::は本来別物ですが、staticという共通文字に騙され同じような挙動をすると誤解し、スコープ定義演算子を用いたメソッドの呼び出し方で悩まされたので、再度staticメソッドとstatic::について復習したことをまとめておきたいと思います。 間違いなどがございましたら、ご指摘のほどよろしくお願い致します。 staticメソッドとは クラスプロパティもしくはメソッドを static として宣言することで、 クラスのインスタンス化の必要なしにアクセスすることができます。 static として宣言されたプロパティやメソッドは、 インスタンス化されたオブジェクトの内部からも静的にコールできます。 static メソッドは、オブジェクトのインスタンスを生成せずに コールすることができるので、疑似変数 $this は、 static として宣言されたメソッドの内部から利用することはできません。 引用:PHP公式ドキュメント staticキーワード staticメソッドの例 <?php class Test { public static function sampleMethod() { // ... } } Test::sampleMethod(); $classname = 'Test'; $classname::sampleMethod(); ?> staticでないメソッドを静的にコールしてはいけない staticでないメソッドを静的にコールすると、Error がスローされます。 PHP 8.0.0 より前のバージョンでは、 static でないメソッドを静的にコールすることが非推奨になっており、 E_DEPRECATED レベルの警告が発生していました。 引用:PHP公式ドキュメント staticキーワード 例: //例 staticメソッドとは class A { public static function aa() { } } //例 非推奨な呼び出し方 class B { public static function bb() //staticメソッド { } public function cc() //staticではないメソッド { } } //上記のようなクラスBの場合でインスタンス化せずに直接staticではないメソッドを呼ぶことが非推奨となっている //staticではないメソッド正しい呼び出し方 $b = new B(); $b->cc(); //非推奨 B::cc(); //staticメソッドに対してはok B::bb(); スコープ定義演算子 (::)とは スコープ定義演算子 (またの名を Paamayim Nekudotayim)、 平たく言うと「ダブルコロン」は、トークンのひとつです。 static, 定数 およびオーバーライドされたクラスのプロパティやメソッドにアクセスすることができます。 これらの要素をクラス定義の外から参照する際には、 クラスの名前を使用してください。 変数を用いてクラスを参照することも可能です。 変数の値に (self や parent、 static といった) キーワードを指定することはできません。 引用:PHP 公式ドキュメント スコープ定義演算子 (::) 例:クラス定義の外からスコープ定義演算子を使う <?php class SampleClass { const CONST_VALUE = 'A constant value'; } $classname = 'SampleClass'; echo $classname::CONST_VALUE; echo SampleClass::CONST_VALUE; ?> ・クラス定義の内部で使われるスコープ定義演算子 クラス定義の内部で使われるスコープ定義演算子は3つ存在し、self と parent、 static がクラス定義の内部からプロパティまたはメソッドにアクセスする際に使用されます。 例:クラス定義の内部でスコープ定義演算子を使う <?php //親クラス class BaseClass { const CONST_VALUE = 'Base constant value'; } //継承先クラス class OtherClass extends BaseClass { public static $my_static = 'static var'; public static function doubleColon() { echo parent::CONST_VALUE . "\n";// parent::で親クラスの定数をコール echo self::$my_static . "\n";// 継承先クラス自身のstaticプロパティをコール } } $classname = 'OtherClass'; $classname::doubleColon(); OtherClass::doubleColon(); //親クラスのメソッドをコールする例 class BaseClass { protected function sample() { echo "BaseClass::sample()\n"; } } class OtherClass extends BaseClass { // 親の定義をオーバーライドします public function sample() { // オーバーライド状態でも親の関数をコールできます parent::sample(); echo "OtherClass::sample()\n"; } } $class = new OtherClass(); $class->sample(); ?> ::(スコープ定義演算子)を用いてメソッドを呼び出す = 静的にコールする だけではない まず、静的にコールするとは、「静的にコールする」=「クラスオブジェクト(インスタンス化)を作らずに直接メソッドを呼ぶ」という認識で良いと思います。 しかし、::(スコープ定義演算子)を用いてメソッドを呼び出す = クラスオブジェクト(インスタンス化)を作らずに直接メソッドを呼び出す、という認識の場合、実はスコープ定義演算子を用いてメソッドを呼び出す([クラス名]::、self::、parent::、static::)」のうち、「static::」のみ特殊な挙動をする為、混乱が生じる場合があります。 ・static::の特殊な挙動とは PHPの公式ドキュメントによると、下記のように記されています。 静的メソッドの場合、これは明示的に指定されたクラス (通常は :: 演算子の左側に書かれたもの) となります。静的メソッド以外の場合は、そのオブジェクトのクラスとなります。 引用:PHP公式ドキュメント 遅延静的束縛 まとめると下記のようになります。 スコープ定義演算子を用いたメソッドの呼び出し方 特徴 static:: ・実行時に最初にコールされたクラスを参照・呼出し先メソッドが静的or動的で使用可能・呼出し先メソッドの定義(静的or動的)によって、静的なコールか動的なコールかが決まる クラス名:: ・呼出し先メソッドが静的メソッド及び、定数へのアクセスを実行する self:: ・自クラスのプロパティ、及びメソッドへの静的アクセスを実行する parent:: ・親クラスのプロパティやメソッドへのアクセスを実行する おわりに staticメソッドとstatic::は別物であるということを念頭に置いて、スコープ定義演算子やstaticメソッドを使っていきたいと思います。 参考文献 PHP 公式ドキュメント staticキーワード PHP 公式ドキュメント 遅延静的束縛
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel&PHP&Carbonで時間の切り上げ、切り下げをする。(時間を丸める)

こんにちは、くりぱんです。 説明 今回は業務の中で、時刻を15分ごとの切り上げで表示する処理を実装したので、備忘録程度にまとめておきます。 おまけに、30分ごとの切り下げもやっていきます。 この記事で実現できること 時刻を丸める 開発環境 OS:MacOS PHP:7.3 Laravel:6 実装 15分切り上げる処理 例:12:53:32 → 13:00:00   10:13:32 → 10:15:00 // 切り上げる分数 $roundUp = 15; // Carbonインスタンス作成 $dateRoundUp = new Carbon('2021-06-04 11:48:25'); // 15分切り上げ→12:00:00になる $dateRoundUp = $dateRoundUp->addMinutes($roundUp - $dateRoundUp->minute % $roundUp)->format('Y-m-d H:i:00'); 30分切り下げる処理 例:12:53:32 → 12:30:00   10:13:32 → 10:00:00 // 切り下げる分数 $roundDown = 30; // Carbonインスタンス作成 $dateRoundDown = new Carbon('2021-06-04 14:48:25'); // 30分切り上げ→14:30:00になる $dateRoundDown = $dateRoundDown->subMinutes($dateRoundDown->minute % $roundDown)->format('Y-m-d H:i:00'); 切り上げ、切り下げともにroundUpとroundDown変数を変えることで、10分の切り上げや切り下げなど臨機応変に対応できるようになります。 最後に 少しでも役に立った!という時は、LGTMをポチッと、、、笑 1つでもLGTMが付くとその日がハッピーになるんです! 役に立たなかった時は、怒らないでコメント頂けると幸いです笑 Twitterもやってます! プログラミングや金融知識について、エンジニアの現実についてつぶやいています! よかったら見てみてくださいね!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel ヘルパ関数のconfigを使って連想配列からキーとバリューを取得する方法

こんにちは、くりぱんです。 説明 今回は、configディレクトリの中に自作したwords.phpの連想配列から、データを取り出す方法を書いていきます。 コード内にてハードコードで書くよりも、こちらに必要な文字データをまとめておいて、config()で取得するとメンテナンス等しやすくなるので、とてもおすすめです。 開発環境 OS: MacOS PHP: 7.3.11 Laravel: 6.2 実装 今回自作したconfig/words.phpは以下の通りです。 words.php <?php return [ 'fruits' => [ 'apple' => ['APPLE' => 'りんご'], 'banana' => ['BANANA' => 'ばなな'], 'grape' => ['GRAPE', 'ぶどう'], ], 'snack' => [ 'chips' => [ 'potato' => ['POTATO' => 'ポテトチップス'], 'sweetPotato' => ['SWEET POTATO' => 'さつまいもチップス'], ], 'gumi' => [ 'soft' => ['SOFT' => 'やわらかいグミ'], 'hard' => ['HARD' => 'ハードグミ'], ] ], ]; この中から値を取得するためには、PHPのビルトイン関数であるkey()とLaravelのヘルパ関数であるconfigの2つを使用して取得できます。 ControllerやModelなどで下記のようなコードを記述することで、config/words.phpのデータを取得することができます。 今回は例として、Controller内で取得しています。 ※適当に作成したConfigCheckControllerで動作確認を行っております。 ConfigCheckController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ConfigCheckController extends Controller { public function index() { // BANANA と出力される $keyTest1 = key(config('words.fruits.banana')); // SWEET POTATO と出力される $keyTest2 = key(config('words.snack.chips.sweetPotato')); // ばなな と出力される $valueTest1 = config('words.fruits.banana.BANANA'); // さつまいもチップス と出力される $valueTest2 = config('words.snack.chips.sweetPotato.SWEET POTATO'); // 取得確認用 dd($keyTest1, $keyTest2, $valueTest1, $valueTest2); return view('welcome'); } } しっかり取得できましたか? 最後に 少しでも役に立った!という時は、LGTMをポチッと、、、笑 1つでもLGTMが付くとその日がハッピーになるんです! 役に立たなかった時は、怒らないでコメント頂けると幸いです笑 Twitterもやってます! プログラミングや金融知識について、エンジニアの現実についてつぶやいています! よかったら見てみてくださいね!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel6 Userモデルに紐づくPolicyを作成(マイページ用)

こんにちは、くりぱんです。 説明 マイページの実装時に、ログインユーザー以外のユーザー情報を変更できないようにする処理を実装したので、メモ程度に残しておきます。 URLのID番号変えると編集できちゃうとかのあれですね! この記事で実現できること ユーザーモデルに紐づくPolicyの作成 アクセス制限 開発環境 OS:MacOS PHP:7.3 Laravel6 実装 下記コマンドでUserPolicyを作成 $ php artisan make:policy UserPolicy Policyの中身を整えて行きます。 ログインユーザーのIDと編集しようとしているマイページの所有ユーザーIDを見比べるようにしています。 app/Policies/UserPolicy.php namespace App\Policies; use App\Models\User; use Illuminate\Auth\Access\Response; use Illuminate\Auth\Access\HandlesAuthorization; class UserPolicy { use HandlesAuthorization; /** * Create a new policy instance. * * @return void */ public function __construct() { // } /** * マイページアクセス制限 */ public function ctrlMyPage(User $user, User $model) { return $user->id === $model->id ? Response::allow() : Response::deny(); } } 今回私は、app/Models配下にユーザーモデルを配置しているので、AuthServiceProvider.phpへPolicyの登録を行います。 ※ポリシーの自動検出機能がありますが、今回の場合は該当しないため app/Providers/AuthServiceProvider.php <?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; use App\Models\User; // ここを追加 use App\Policies\UserPolicy; // ここを追加 class AuthServiceProvider extends ServiceProvider { /** * The policy mappings for the application. * * @var array */ protected $policies = [ User::class => UserPolicy::class, // ここを追加 ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); // } } 最後にコントローラを少し変えていきます。 今回は下記の3つのメソッドの中に必要な処理を追記していきます。 Show(マイページ表示) Edit(ユーザー情報編集ページ) Update(ユーザー情報編集処理) の全てのメソッドにアクセス制限を実装していきます。 app/Http/Controllers/MyPageController.php <?php namespace App\Http\Controllers; use App\Http\Requests\UpdateMyPageRequest; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Models\User; class MyPageController extends Controller { public function __construct() { // $this->middleware('can:ctrlMyPage,user')->only('show'); } /** * ユーザー情報表示 * * @return view */ public function show() { // ログインユーザー情報取得 $user = Auth::user(); // ポリシー設定 $this->authorize('ctrlMyPage', $user); // ユーザー情報表示 return view('my_pages.show', compact('user')); } /** * ユーザー情報編集画面表示 * * @param Int $id * * @return view */ public function edit(Int $id) { // ユーザー情報 $user = User::find($id); // ポリシー設定 $this->authorize('ctrlMyPage', $user); // ユーザー情報編集ページへ return view('my_pages.edit', compact('user')); } /** * ユーザー情報編集処理 * * @param UpdateMyPageRequest $request * @param Int $id * * @return redirect */ public function update(UpdateMyPageRequest $request, Int $id) { // ユーザー情報取得 $user = User::find($id); // ポリシー設定 $this->authorize('ctrlMyPage', $user); // 編集処理実行 $user->fill($request->all())->save(); // ユーザー情報表示 return redirect()->route('mypage.show')->with('flash_message', '変更が完了しました。'); } } // ポリシー設定 $this->authorize('ctrlMyPage', $user); ここで編集しようとしているユーザーの情報を渡しています。 Showメソッドの場合、ログインユーザーの情報を渡しているので、おそらくPolicyの設定は不要なのですが、一応実装しています。 いらないと思えば、外しても問題なさそうです。 これで実装自体は終わりなので、他の人のマイページに飛べるかどうか試してみてください! Forbiddenが出ていればOKです! 最後に 少しでも役に立った!という時は、LGTMをポチッと、、、笑 1つでもLGTMが付くとその日がハッピーになるんです! 役に立たなかった時は、怒らないでコメント頂けると幸いです笑 Twitterもやってます! プログラミングや金融知識について、エンジニアの現実についてつぶやいています! よかったら見てみてくださいね!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel:部分的に使用しているreactにview変数を受け渡す方法

Laravel:部分的に使用しているreactにview変数を受け渡す方法 構成 基本はbladeを使用し、reactは特定画面の指定div要素内のみで使用 目的 controllerから渡されたviewの変数をreactで使用したい 対応方法 javascriptのglobal変数として渡すことも可能だが、今回はdata属性にパラメータを指定して受け渡す。 受け渡し変数 HogeController.php $fuga = json_encode([ ['key' => 'key1', 'value' => 'hoge1'], ['key' => 'key2', 'value' => 'hoge2'], ['key' => 'key3', 'value' => 'hoge3'], ]); return view('home', compact('fuga')); hoge.blade.php <!-- idおよびblade部分は任意の文字列--> <div id='react' data-blade={{$fuga}}/> app.tsx componentDidMount() { const element = document.getElementById('react'); if (element && element.dataset.blade) { const object = JSON.parse(element.dataset.blade); console.log(object); } } 所感 javascriptのglobal変数に持たせるやり方もありますが、個人的にはこちらのほうが管理しやすいと思います。 vueのv-bindは便利ですね。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む