11

我无法使用 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');
4

3 回答 3

31

如果您使用的是最近安装的 Laravel 8,您将拥有 Livewire V2。在此版本中,Route::livewire()已删除. 相反,您指定一个普通get()路由,其操作是 Livewire 组件类。

Route::get('/' , App\Http\Livewire\LandingPage::class);
于 2020-09-13T07:34:50.730 回答
5

如果您使用 livewire v1.x,请使用此注释:

//(livewire v1.x)
Route::livewire('/post', 'LandingPage');

如果您使用的是 livewire v2.0,请使用这个:

//(livewire v2.x)
Route::get('/post', \App\Http\Livewire\LandingPage::class);
于 2021-05-24T08:08:01.953 回答
-2

使用 Laravel 8.29 和 LiveWire 2.4.0

UnexpectedValueException 无效的路由操作:[App\Http\Controllers\App\Http\Livewire\Blog]。

我认为这比你需要在 App\Http\Controllers 中创建一个新的 Controller 并将路由与这个 Controller 链接更好。在视图中使用 @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] 不存在。

于 2021-03-02T11:21:13.583 回答