属性[livewire]不存在

时间:2020-09-13 03:15:03

标签: laravel laravel-livewire

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

3 个答案:

答案 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] 不存在。