livewire:copy — Livewireコンポーネントをコピーするコマンド

未分類

Laravel Livewire コマンドまとめ ― 実務で使えるリファレンス

以下は Livewire コンポーネントの作成・コピー・更新に関する、最短で使えるコマンドと実装サンプルです。
H2 から開始し、実務で頻繁に出てくるケースを中心に構成しています。


php artisan make:livewire

コンポーネントを作成すると、クラスと Blade ビューが同時に生成されます。

# コンポーネント名をクラス名と Blade ファイル名に変換
php artisan make:livewire ArticleForm

生成されるファイル

  • app/Http/Livewire/ArticleForm.php
  • resources/views/livewire/article-form.blade.php

使い方のポイント

  • クラス名はキャメルケース、Blade ファイルは kebab-case
  • クラスに render() メソッドを実装し、view('livewire.article-form') を返す

php artisan livewire:copy

既存コンポーネントをコピーして、新しいバージョンを作る手間を省きます。

# ① コピーしたいコンポーネントを作成
php artisan make:livewire ArticleForm

# ② 同名のコピーを作成
php artisan livewire:copy ArticleForm

実行後

コピー元 コピー先
app/Http/Livewire/ArticleForm.php app/Http/Livewire/ArticleFormCopy.php
resources/views/livewire/article-form.blade.php resources/views/livewire/article-form-copy.blade.php

ポイント
名前空間・ファイルパスは自動で補正されるので、手動で修正する必要はありません。


コピー先での実装例

PHP クラス

<?php
namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Article;

class ArticleFormCopy extends Component
{
    public Article $article;
    public string $newTitle;

    public function mount()
    {
        $this->article = new Article();
    }

    public function submit()
    {
        $validated = $this->validate([
            'newTitle' => 'required|max:255',
        ]);

        $this->article->title = $validated['newTitle'];
        $this->article->save();

        session()->flash('message', 'コピー記事が保存されました');
        return redirect()->route('articles.index');
    }

    public function render()
    {
        return view('livewire.article-form-copy');
    }
}

Blade ビュー

{{-- resources/views/livewire/article-form-copy.blade.php --}}
<div>
    <h2>コピー記事を作成</h2>
    <form wire:submit.prevent="submit">
        <input type="text" wire:model="newTitle" placeholder="記事タイトル">
        <button type="submit">保存</button>
    </form>

    @if (session('message'))
        <div>{{ session('message') }}</div>
    @endif
</div>

コマンド一覧(まとめ)

コマンド 役割 主なオプション
php artisan make:livewire コンポーネント作成 クラス名、Blade 自動生成
php artisan livewire:copy 既存コンポーネントコピー --force (上書き)
php artisan livewire:refresh Blade ビュー更新

よくある使用ケースと実装ポイント

目的 具体的な実装ポイント
CRUD フォーム データベースへのレコード作成/更新 wire:model + wire:submit.prevent + $rules
モーダル 編集・削除確認 wire:click="openModal" + @if($showModal)
リストフィルタ 大量データ絞り込み protected $queryString = ['search'];
ファイルアップロード 画像・ドキュメント添付 public $photo; + save()

よくある落とし穴と対策

  1. 名前空間の競合
  • コピー後に手動でファイル名変更すると、namespace が古いまま残るケースがあります。
  • 対策php artisan route:clear でキャッシュクリアし、namespace を必ず確認。
  1. プロパティのリセット忘れ
  • wire:model の値が次リクエストでも残るとバリデーションが失敗することがあります。
  • 対策$this->reset()submit() 後に呼び出す。
  1. バリデーションの抜け漏れ
  • 直接 validate() だけで済ませるとルールが不十分。
  • 対策$rules 配列で必須項目・フォーマットを明示。
  1. Blade ファイルパス誤り
  • コピー後に Blade を別ディレクトリに移動した場合、render() が正しいパスを参照しない。
  • 対策render()view('livewire.article-form-copy') を明示的に指定。

参考リンク


レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする