Mos*_*ade 2 livewires laravel laravel-livewire laravel-8
我使用 Laravel 8。
我在RouteServiceProvider以下位置定义了受保护的命名空间:
protected $namespace = 'App\Http\Controllers';
Run Code Online (Sandbox Code Playgroud)
然后通过以下路线使用 livewire:
Route::get('/xxx' , App\Http\Livewire\Counter::class);
Run Code Online (Sandbox Code Playgroud)
但我有以下错误:
Invalid route action: [App\Http\Controllers\App\Http\Livewire\Counter].
Run Code Online (Sandbox Code Playgroud)
注意:这增加App\Http\Controllers了我的第一个动作!!!如果protected $namespace全部删除就可以了。但我不想删除它。
有没有办法让我同时拥有两者?controller protected namespace(用于控制器命名空间)和一个Route::getfor Full-Page Components?
小智 7
对于那些仍在寻找解决方案的人。在将现有安装从 Laravel 7 升级到 8 并添加一些新的 Livewire 组件时,我遇到了这个问题。
您应该能够像这样直接在 Route 中调用该类,
Route::get('/blog', [\App\Http\Livewire\Pages\ShowPosts::class, '__invoke'])->name('blogs');
Run Code Online (Sandbox Code Playgroud)
这应该允许您使用 Laravel 常规网络路由。
然后在您的 Livewire 组件中,您可以像这样扩展布局,
class ShowPosts extends Component{
...
public function render(){
return view('livewire.show-posts')
->layout('layouts.base');
}
...}
Run Code Online (Sandbox Code Playgroud)
另一种选择是从 Routes 中删除命名空间,如下面的链接中所述。
小智 5
不幸的是,您将无法将受保护的 $namespace 与 Livewire 一起使用。您必须将其注释掉并更新所有到 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 中,它可以被删除,以支持新的方式。
| 归档时间: |
|
| 查看次数: |
3403 次 |
| 最近记录: |