如何解决laravel-livewire全页组件
我使用laravel 8。
我在RouteServiceProvider
中定义了受保护的名称空间:
protected $namespace = 'App\Http\Controllers';
然后将Livewire用于以下路线:
Route::get('/xxx',App\Http\Livewire\Counter::class);
Invalid route action: [App\Http\Controllers\App\Http\Livewire\Counter].
注意:这首先增加了App\Http\Controllers
操作!如果删除protected $namespace
,一切正常。但是我不想删除它。
我是否可以同时拥有 controller protected namespace
(用于控制器名称空间)和Route::get
来用于Full-Page Components
?
解决方法
对于那些仍在寻找解决方案的人。在将现有安装从 Laravel 7 升级到 8 并添加一些新的 Livewire 组件时,我遇到了这个问题。
您应该能够像这样直接在 Route 中调用该类,
Route::get('/blog',[\App\Http\Livewire\Pages\ShowPosts::class,'__invoke'])->name('blogs');
这应该允许您使用 Laravel 常规网络路由。
然后在您的 Livewire 组件中,您可以像这样扩展布局,
class ShowPosts extends Component{
...
public function render(){
return view('livewire.show-posts')
->layout('layouts.base');
}
...}
另一种选择是从路由中删除命名空间,如下面的链接中所述。
,不幸的是,您将无法与Livewire一起使用受保护的$ namespace。 您必须将其注释掉,并将所有路线更新为laravel 8:https://laravel.com/docs/8.x/releases#routing-namespace-updates
由于Livewire组件不在App \ Http \ Controllers下,因此使用$ namespace将永远无效。
据我了解。由于Laravel 7中存在此问题,Route :: livewire存在于Livewire 1.x中。但是使用Laravel 8可以将其删除,以支持新方法。
,您可以尝试从web.php
开始添加您的livewire组件:
use App\Http\Livewire\Counter;
在您的路线上:
Route::get('/xxx',Counter::class);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。