Laravel Livewire 组件无法读取简单的 html 参数

Laravel Livewire Component not reading simple html parameters

刚开始使用 Laravel Livewire,我在将参数传递给 Livewire 组件时遇到问题。

Home.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        <link href="{{ asset('css/app.css') }}" rel="stylesheet">
        @livewireStyles
    </head>
    <body class="antialiased p-10">
        
        <livewire:forms.input type="text" name="Test" />

        @livewireScripts
    </body>
</html>

组件

<div class="FormsInput">
    @isset($label)
    <label for="{{ $name }}">{{ $label }}</label>
    @endisset
    <div class="">
        <input wire:model="{{ $name }}" type="{{ $type }}" name="{{ $name }}" id="{{ $name }}" placeholder="{{ $placeholder }}">
    </div>
    @isset($helper)
    <div class="">
        {{ $label }}
    </div>
    @endisset
    <div class="">
        {{ $error }}
    </div>
</div>

Http/Livewire/Forms/Input

<?php

namespace App\Http\Livewire\Forms;

use Livewire\Component;

class Input extends Component
{
    public function render()
    {
        return view('livewire.forms.input');
    }
}

这是我得到的错误:

ErrorException
Undefined variable $name

要修复此错误,您必须做两件事:

  1. 将名称 属性 添加到您的组件,因为 Livewire 组件将数据存储和跟踪为组件 class.
  2. 上的 public 属性

class Input extends Component
{
   public string $name;

     ...
}
  1. 在 wire:model 上使用 属性 名称,不带“$”
<input wire:model="name" ... />

您可以在此 Link.

找到有关 Livewire 文档的数据绑定