php Laravel Livewire错误“在初始化之前不能访问”

42fyovps  于 2023-05-12  发布在  PHP
关注(0)|答案(2)|浏览(134)

我尝试使用Livewire绑定直接到模型属性,我得到这个错误,有人帮助吗?先谢谢你。
在初始化之前,不能访问类型化属性App\Http\Livewire\V2\Settings\Locations::$country

class Locations extends Component{
  public Country $country;
  use WithPagination;
  protected $rules = [
    'country.name' => 'required|min:100',
    'country.note' => 'required|min:100',
  ];

  public function SaveCountry(){
    $this->validate();
    $this->country->save();
    $this->reset();
    session()->flash('info','The country have been added successful.');
  }
 public function render(){
    return view('livewire.v2.settings.locations',[
        'countries' => Country::orderBy('order_num','desc')->paginate(10),
    ]);
  }
}
ergxz8rk

ergxz8rk1#

当你在PHP中定义变量的类型时,你需要给它提供一个默认值。
如果您的组件正在创建Country,则可以在mount函数中将其设置为空Country

public function mount()
{
    $this->country = new Country();
}

或者将public Country $country设置为现有的Country

nuypyhwy

nuypyhwy2#

如果出于某种原因,Livewire一直给你在初始化之前不能访问的命令,即使你使用mount()代替__construct(),最好使用甚至在mount()之前出现的** Boot ()**方法。
对我很有效。
在这里我终于明白了:https://laravel-livewire.com/docs/2.x/lifecycle-hooks#class-hooks

相关问题