Livewireコンポーネントでイベントを発火するには?

「Livewire では、次のように JavaScript でイベント リスナーを登録できます。」 「この機能は実際には信じられないほど強力です。たとえば、Livewire が特定のアクションを実行したときにアプリ内でトースター (ポップアップ) を表示するリスナーを登録できます。これは、Livewire を使用して PHP と JavaScript の間のギャップを埋める多くの方法の 1 つです。」ということで、これは凄い機能だと思います。 更新ボタンが押されて、onModifyメソッド で何か処理を行い、ブレード側 にイベントを発火する例。 Livewireコンポーネント のメソッドで「$this->emit()」でイベントを発火します。 ブレード側の Livewire.onメソッド で modifiedイベント を受け取り、受信したメッセージをダイアログに表示します。

Livewireコンポーネントでイベントを発火するには? Read More »

Livewire 確認ダイアログでイベントを発火するには?

確認ダイアログで「はい」ボタンが押された時に、「Livewire.emit(‘modify’)」で modifyイベント を発火させます。 以下の変更ボタンのように「wire:click=”modify”」となっていれば、リスナーに modifyイベント を登録しなくても 呼び出すことができましたが、wire:click を記載しない場合には、リスナーにイベントを登録する必要がありました。

Livewire 確認ダイアログでイベントを発火するには? Read More »

Laravel で S3 にファイルを保存するには?

Laravel をインストールして S3 にファイルを保存する手順。 プロジェクト名(s3)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 league/flysystem-aws-s3-v3 パッケージ をインストールします。 .envファイル を修正します。 routes/web.phpファイル を修正します。 ブラウザでアクセスすると、アンサーズのロゴを取得し、ロゴを S3 に保存します。 ブラウザでアクセスして、次に S3 にファイルが保存されているか確認してみましょう。

Laravel で S3 にファイルを保存するには? Read More »

Laravel @for_extract

@for_extract を使うには app/Providers/AppServiceProvider.php に for_extract と endfor_extract を定義するだけです。 ブレードでの使い方は↓これだけです。$article の title にアクセスできます。 @foreach を参考にしていますので、loop変数 も使えます。 ローカル変数にプレフィックスを付ける場合は、第2パラメータに設定します。 因みに、@for_extract の前に考えていたのは @extract ディレクティブ です。「@foreach の次にどうせ @extract をきめるなら、一緒にしてしまってもいいかなぁ」と思ったわけですね。

Laravel @for_extract Read More »

Googleマップ 以外でJavaScriptで地図を操作するには?

こちらの HTML をコピー ブラウザで「map.html?lng=139.7649308&lat=35.6812405」にアクセスすると東京駅が表示されます。 地図を動かすと、中心のマーカーも動き、常に地図の中心を指すようにしています。これは moveイベント で、マーカーを地図の中心にセットしているからです。 次に↓下の部分に注目してください。地図移動後に、緯度経度を親のウィンドウに postMessage で伝えていています。 iframe で地図を表示して、地図移動後にイベントで緯度経度を取得します。 postMessage された緯度経度を、messageイベント で受け取り、テキストボックスに表示することができました。

Googleマップ 以外でJavaScriptで地図を操作するには? Read More »

Laravel イベント非同期にチャレンジしてみる。

Laravel をインストールしてイベントを試す手順。 プロジェクト名(event)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 app/Providers/EventServiceProvider.php にイベントを定義します。 ↓下の OrderShippedクラス、SendShipmentNotificationクラス というのは未だ存在しないファイルです。これからコマンドでクラスファイルを生成する為に、EventServiceProvider.php ファイルに定義する感じです。 artisanコマンド で↑上の EventServiceProvider.phpファイル からイベントクラスとリスナークラスファイルを生成します。 app/Events/OrderShipped.php、app/Listeners/SendShipmentNotification1.php、app/Listeners/SendShipmentNotification2.php のファイルが生成されます。 app/Events/OrderShipped.php app/Listeners/SendShipmentNotification1.php app/Listeners/SendShipmentNotification2.php イベントを発火する welcomページ 呼び出し時にイベントを発火するように routes/web.php を修正します。 ブラウザで画面を表示してログを確認します。↓下のようにイベントは同期で呼び出されました。 イベントを非同に期対応させます .env ファイルを QUEUE_CONNECTION を sync から database に変更します。 キューテーブルを作成します。 app/Listeners/SendShipmentNotification2.php に「ShouldQueue」を implements で非同期対応します。 storage/logs/laravel.log を確認すると非同期にした SendShipmentNotification2.php が呼び出されません。 以下のコマンドを実行するとキューにたまったイベントが処理されます。

Laravel イベント非同期にチャレンジしてみる。 Read More »