我无法使用laravel-livewire在Laravel 8路由上运行代码。
该课程在Livewire\LandingPage
之内。
我得到的错误是
属性[livewire]不存在
这是我的路线
<?php
use Illuminate\Support\Facades\Route;
Route::livewire('/' , 'LandingPage');
Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
答案 0 :(得分:16)
如果您正在使用最新安装的Laravel 8,则将拥有Livewire V2。在此版本中,Route::livewire()
has been removed。而是指定一条普通的get()
路线,其动作是Livewire组件类。
Route::get('/' , App\Http\Livewire\LandingPage::class);
答案 1 :(得分:0)
如果您使用 livewire v1.x,请使用此注释:
//(livewire v1.x)
Route::livewire('/post', 'LandingPage');
如果您使用的是 livewire v2.0,请使用这个:
//(livewire v2.x)
Route::get('/post', \App\Http\Livewire\LandingPage::class);
答案 2 :(得分:-1)
使用 Laravel 8.29 和 LiveWire 2.4.0
<块引用>意外值异常 无效的路由操作:[App\Http\Controllers\App\Http\Livewire\Blog]。
我认为这比您需要在 App\Http\Controllers 中创建一个新控制器并将路由与此控制器链接更好。在视图中使用 @liveware 到您的 LiveWire 控制器。
Route::group(['middleware' => 'auth'], function () {
// Only with LiveWire v1
//Route::livewire('/blog', 'blog')->section('blog');
// For LiveWire 2.
Route::get('/blog' , 'BlogController@index');
});
App\Http\Controllers\BlogController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class BlogController extends Controller
{
public function index(){
return view('blog.index');
}
}
资源/视图/博客/index.blade.php
@livewire('blog')
注意: 使用修复 (https://laravel-livewire.com/docs/2.x/upgrading)
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace) // Remove me
->group(base_path('routes/web.php'));
}
你会在中间件中遇到路由问题
<块引用>Illuminate\Contracts\Container\BindingResolutionException 目标类 [Auth\LoginController] 不存在。