You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Livewire表单提交出现Unable to resolve dependency [ $city ]错误如何解决

错误原因
  1. 你在Livewire组件的test方法中声明了必填入参$city,但前端表单提交调用test方法时没有传递任何参数,Livewire尝试解析方法依赖时找不到$city对应的值,因此抛出该错误。
  2. 你的输入框已经绑定了wire:model.defer="city",而$city是组件的公共属性,表单提交时Livewire会自动把输入框的值同步到组件的$city属性,完全不需要通过方法入参传递。
修复方案
  • 第一步:修改test方法,去掉入参$city,直接调用类的公共属性即可:
public function test()
{
    $this->apiKey = config('services.openweather.key');
    $this->getWeatherByCity();
}
  • 第二步(可选,解决潜在异常):补充类属性声明,修正属性名拼写不一致问题。你代码中开头定义的属性是$currentWeatherRes、$forecastWeatherRes,后续赋值用的是后缀为Resp的属性名,同时用到了未声明的$apiKey属性,调整后的类属性定义如下:
class WeatherInfo extends Component 
{ 
    public $city; 
    // 补充缺失的属性声明,统一属性名拼写
    private $apiKey;
    private $currentWeatherResp; 
    private $forecastWeatherResp;
    private $unit;
    
    // 其余原有代码保持不变
}
  • 第三步(可选,适配你的需求):如果你预期是通过updatedCity生命周期钩子自动更新城市,无需额外绑定提交按钮,可添加如下代码,城市输入框内容变化时会自动触发查询:
// Livewire自带的属性更新监听钩子,$city属性更新后自动执行
public function updatedCity()
{
    $this->getWeatherByCity();
}

内容的提问来源于stack exchange,提问作者OsG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:57:02