我尝试使用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),
]);
}
}
2条答案
按热度按时间ergxz8rk1#
当你在PHP中定义变量的类型时,你需要给它提供一个默认值。
如果您的组件正在创建
Country
,则可以在mount
函数中将其设置为空Country
:或者将
public Country $country
设置为现有的Country
。nuypyhwy2#
如果出于某种原因,Livewire一直给你在初始化之前不能访问的命令,即使你使用mount()代替__construct(),最好使用甚至在mount()之前出现的** Boot ()**方法。
对我很有效。
在这里我终于明白了:https://laravel-livewire.com/docs/2.x/lifecycle-hooks#class-hooks