0

在 Laravel 8 发布之前,我在 Laravel 7 上开始了一个项目,我仍在学习这个框架,所以我使用这个步骤更新到那个版本,我知道这个新的脚手架库叫做 Jetstream,我用这些步骤安装了这个库:

  1. composer require laravel/jetstream

  2. php artisan jetstream:install livewire --teams

  3. npm install && npm run dev

  4. php artisan migrate

在处理我的视图和模型之后,我将继续实现会话功能,但是当我尝试在 localhost:8000/register 上注册项目并验证我的数据时,我收到了这个错误

试图获取非对象的属性“id”(查看:\path-to\my-project\resources\views\navigation-dropdown.blade.php)(查看:\path-to\my-project\resources\views \navigation-dropdown.blade.php)(查看:\path-to\my-project\resources\views\navigation-dropdown.blade.php)http://localhost:8000/dashboard

这是引发异常
navigation-dropdown.blade.php 第 169 行的视图部分 这是原版文件

                    <!-- Team Settings -->
                <x-jet-responsive-nav-link href="{{ route('teams.show', Auth::user()->currentTeam->id) }}" :active="request()->routeIs('teams.show')">
                    {{ __('Team Settings') }}
                </x-jet-responsive-nav-link>
     

在注册表中引入的数据被存储在数据库中,但是发生了错误

我在身份验证时检查了另一个问题Laravel Jetstream + Livewire + Teams FeatureTest 问题,但似乎答案适用于不同的上下文,因为它正在处理测试,没有香草注册功能。

这是我当前的 composer.json

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.3.0",
        "fideloper/proxy": "^4.2",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel/framework": "^8.0",
        "laravel/jetstream": "^1.0",
        "laravel/sanctum": "^2.6",
        "laravel/tinker": "^2.0",
        "livewire/livewire": "^2.0"
    },
    "require-dev": {
        "facade/ignition": "^2.3.6",
        "fzaninotto/faker": "^1.9.1",
        "mockery/mockery": "^1.3.1",
        "nunomaduro/collision": "^5.0",
        "phpunit/phpunit": "^8.5"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}

我尝试安装以使用 Jetstream 测试一个新的 Laravel 项目,并且它可以正常工作,这让我对我当前的项目发生了什么感到困惑。

4

2 回答 2

0

最后,对我有用的是使用 jetstream 创建一个新项目,然后在我的原始项目中删除了 vendor 和 node_modules 文件夹,然后将新项目的文件复制到我的原始项目中,现在它可以按预期工作

代表 OP 添加的答案。

于 2020-10-24T23:12:04.600 回答
0

创建用户时未分配团队,请参见 users 表和列 current_team_id 为空。navigation-menu.blade.php 仅检查 TeamFeatures,但不检查是否真的分配了团队。

            @if (Laravel\Jetstream\Jetstream::hasTeamFeatures())
            @if (Laravel\Jetstream\Jetstream::hasTeamFeatures() && Auth::user()->current_team_id)

有关详细信息,这里是尝试获取非对象属性的问题

于 2021-06-17T06:42:23.630 回答