Livewire 親子のコンポーネントで複数のプロパティを更新するには?oyako5

Laravel と Livewire をインストールして、親と子のコンポーネントで複数のプロパティをバインディングして同期されるかを確認 プロジェクト名(oyako5)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 ララベルのトップディレクトリで、Livewireパッケージ をインストールします。 Livewire のクラスとビューを作成するため、ディレクトリを作成します。 LiveRelationトレイト を作成します。 ライブワイヤーの親コンポーネントを作成します。app/Http/Livewire/ParentComponent.php ライブワイヤーの親コンポーネントのビューを作成します。resources/views/livewire/parent-component.blade.php ↑のポイントは5行目の「bind=”counter1,counter2″」です。ここで 親コンポーネントの counter1とcounter2のプロパティを子コンポーネントのプロパティ を紐づけています。 ライブワイヤーの子コンポーネントを作成します。app/Http/Livewire/ChildComponent.php ライブワイヤーの子コンポーネントのビューを作成します。resources/views/livewire/child-component.blade.php ↑のポイントは3,4行目でcounter を defer にしています。5行目でリフレッシュさせて同期させています。 public/liveext.js を作成します。 resources/views/index.blade.php を作成します。 routes/web.php にルートを定義します。 ブラウザでアクセスしてみましょう。 COUNTER1 と COUNTER2 に値をいれて、リフレッシュボタンを押すと、バインディングされた親のコンポーネントの COUNTER1 と COUNTER2 が同期されます。

Livewire 親子のコンポーネントで複数のプロパティを更新するには?oyako5 Read More »

Livewire クラスメソッドから親コンポーネントにだけイベントを送るには?emitParent

完成系は↓こちらです。 Laravel と Livewire をインストールして、emitParent のサンプルプログラムを作成してみます。 プロジェクト名(emitParent)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 ララベルのトップディレクトリで、Livewireパッケージ をインストールします。 次のコマンドを実行して、parent-formコンポーネント を生成します。 次の 2つ のファイルが生成されます。 ※因みに、render メソッド を定義しなくても livewire.parent-form は呼び出されます。 生成された parent-formコンポーネント のクラスとビューを次のように置き換えます。 app/Http/Livewire/ParentForm.php resources/views/livewire/parent-form.blade.php child-formコンポーネント のクラスとビューを作成します。 app/Http/Livewire/ChildForm.php resources/views/livewire/child-form.blade.php grandchild-formコンポーネント のクラスとビューを作成します。 app/Http/Livewire/GrandchildForm.php resources/views/livewire/grandchild-form.blade.php LiveRelationトレイト を作成します。 public/liveext.js を作成します。 resources/views/index.blade.php ファイル を作成します。 routes/web.php にルートを追加します。 ブラウザで確認します。 ↑上が Grandchild

Livewire クラスメソッドから親コンポーネントにだけイベントを送るには?emitParent Read More »

Livewire Actionsの説明について

「Passing Action Parameters」についてブレード側の説明は「次のように、追加のパラメーターを式で直接 Livewire アクションに渡すことができます。」と、これだけです。。。 上のコードでは、addTodo のパラメーターにプロパティの値を展開して渡していますので、表示時には以下のようになります。 実は、追加パラメーターに JavaScript を書くこともできます。これが言いたかったです。getTodoId() と getTodoName() は JavaScript の関数です。 ↓次 click した時に↓下のようにセミコロンで区切って複数の PHPのメソッド を呼びたくなりますが、それはできません。PHPのメソッドは1つしか実行することができません。 ↓次 「Magic Actions」に「Livewire には、通常 “$” 記号が前に付いている “魔法の” アクションがいくつかあります。」とあります。ここで勘違いしてしまうのが、↓下の「$set」。この $ は PHP でもなければ jQeury でもありません。こういうものなのです。

Livewire Actionsの説明について Read More »

PHP 可変長引数の後に引数は定義できるか?

 可変長引数の後の引数の動作を確認してみましょう。↓下のようなコードが実行できるか確認しました。理想は $a には 1 が入り、$b には [2,3,4] が入り、$c には 5 が入るかもしれない。と思ったわけです。 結果。エラーになってしまいました。この書き方はできません。

PHP 可変長引数の後に引数は定義できるか? Read More »

Livewire ライブワイヤーの JS を修正したい

livewire.js の中の callメソッド を上書きしたいと思いました。 ↑上のコードを見易く整形すると、↓下のコードになります。 話は少しそれますが、↑上のソースで衝撃だったのが8行目と9行目で、行の終わりに「,」のカンマを使っているところです。セミコロンならわかりますけど、カンマです・・・「var i=0,j=0,k=0;」と同じことか、確かに最後の行がカンマで終わらなければ、カンマでいけますね。 ↓下のように★のマークの行を入れることができれば勝てるのですけれど、、、 勝てました。 やり方です。component.initialized のフックのタイミングで、コンポーネントに設定されている addActionメソッド を別名 _addAction で登録します。新addActionメソッド では、メソッド呼び出しの場合にパラメーターに Livewire.data() を追加して元の addAction を呼び出すように変更します。 ↑当初は callメソッド を変更していましたが、callメソッド も addActionメソッド を通りますので、addAction が正解です。

Livewire ライブワイヤーの JS を修正したい Read More »

Livewire クラスメソッドから他のコンポーネントを指定してイベントを送るには?emitFind

Form間で値をコピーするサンプルプログラムを作成してみます。 Laravel と Livewire をインストールして、クラスメソッドから他のコンポーネントにイベントを送る手順。 インストール時にプロジェクト名のディレクトリが作成されます。 ↓下のメッセージが表示されてインストールは終わります。 Laravel のインストールはここまで。 次の 2つ のファイルが生成されます。 ※因みに、renderメソッド を定義しなくても livewire.formは呼び出されます。 app/Http/Livewire/Form.php ↑上のポイントは、copyメソッド 内の emitFindメソッド で、もう1つのコンポーネントに copy2イベント を送っています。また、emitFind よりも前で emitDirtySet を実行しています。これは emitFind の後に動く、LiveData のデストラクタによる値の上書きを防ぐ為です。(ここで emitDirtySet が生まれた!) resources/views/livewire/form.blade.php コピーボタンを押すと、まず自分の copyメソッド が呼ばれ、emitFindを実行し、相手の copy2メソッド が呼び出されます。

Livewire クラスメソッドから他のコンポーネントを指定してイベントを送るには?emitFind Read More »

PHP の self と static について

動作を確認してみましょう。↓下のような関係で、Childクラス から testメソッド を実行したら、どのクラスの helloメソッド が呼び出されるでしょうか? 結果です。 ↑Childクラス から testメソッドを実行すると、①self の場合は、それが書かれているクラスの helloメソッド を呼び出す。②static の場合は、継承後のクラスの helloメソッド を呼び出す。ということが分かりましたよね。 因みに、Childクラス に Parentクラス と同じ __invokeメソッド を定義すれば、self は Childクラス になります。

PHP の self と static について Read More »

Livewire JavaScript で PHPのクラスメソッド を実行して、その直後にプロパティの値を確認するには?

Laravel と Livewire をインストールして、PHPクラスメソッドを実行後にプロパティの値を確認する手順。 プロジェクト名(promise)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 ララベルのトップディレクトリで、Livewireパッケージ をインストールします。 次のコマンドを実行して、promiseコンポーネント を生成します。 次の 2つ のファイルが生成されます。 ※因みに、renderメソッド を定義しなくても livewire.promise は呼び出されます。 生成された promiseコンポーネント のクラスとビューを次のように置き換えます。 app/Http/Livewire/Promise.php ↑10行目。resetメソッド で値をリセットしています。 resources/views/livewire/promise.blade.php ↑ポイント。2行目はプロミスを使って同期後にログを出力しています。同期処理にはもう1つのやり方があります。18行目に async を付けて、19行目に await を付けると同期処理で実行できます。 resources/views/index.blade.php ファイル を作成します。 routes/web.php に Livewireコンポーネント のルートを追加します ブラウザで確認します。

Livewire JavaScript で PHPのクラスメソッド を実行して、その直後にプロパティの値を確認するには? Read More »

Scroll to Top