【发布时间】:2021-10-08 21:25:26
【问题描述】:
我有一个非常简单的 livewire 组件,可以帮助用户存储虚 URL
<form wire:submit.prevent="save">
<div class="form-group form-inline">
<span>{{ config('app.url') }}/request/</span>
<input type="text" id="vanity" wire:model.defer="vanityUrl" name="vanityUrl">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">@if($saved) Saved @else Save @endif</button>
<button type="button" id="copy-vanity" class="btn btn-secondary">Copy</button>
</div>
</form>
保存操作也很简单。
public function save()
{
$user = Auth::user();
$this->validate();
$user->update(['vanity_slug' => Str::slug($this->vanityUrl)]);
$this->vanityUrl = Str::slug($this->vanityUrl);
$this->saved = true;
}
这在本地有效,但在生产环境中无效。我正在使用 Forge、php7.4、L8,除了 URL 之外的环境之间都是一样的。我已经加载了 livewire:scripts 和 livewire:styles,它再次在本地工作,但在 prod 中没有。
在 prod 中,页面重新加载。几天来我一直试图弄清楚这一点......让我发疯。 TIA
【问题讨论】:
-
这是部署后的典型问题 - 确保实际安装并运行 Livewire
php artisan optimize -
我试过了,以及 PHP 工匠优化。两者都没有解决问题。 Livewire 已安装并链接,脚本加载得很好。这就是为什么这如此令人困惑。我确实加载了 Alpine 3,但我不应该导致这种情况。表单元素获取一个wire:id、wire:initial-data和wire:prevent.submit。
-
如果你有 Alpine.js v3,你需要 Livewire 2.5 或更高版本。当清除不起作用时,我听到的唯一解决方案是在您的生产环境中重新安装 Livewire - 在这种情况下,它没有正确安装
-
@qirel 这就是问题所在。谢谢你。把它放在答案中,我会接受。