首页 > 解决方案 > Laravel 包/服务提供者添加

问题描述

我正在尝试在我的 laravel 应用程序中使用https://github.com/sebdesign/laravel-state-machine 。但是该软件包未正确安装。我的控制器无法识别它。首先,我将以下内容添加到我的 composer.json

"repositories": [
  {
     "type": "vcs",
     "url": "https://github.com/sebdesign/state-machine"
  }
]

然后我跑

composer require sebdesign/laravel-state-machine:1.0

然后我在我的 config/app.php 中添加了以下内容

'providers' => [
    Sebdesign\SM\ServiceProvider::class,
],

'aliases' => [
    'StateMachine' => Sebdesign\SM\Facade::class,
],

之后,我使用 config/state-machine.php 发布配置文件

php artisan vendor:publish --provider="Sebdesign\SM\ServiceProvider"

就是这样。现在我试图在我的控制器中使用它:

// Using the facade
$stateMachine = StateMachine::get($article, 'simple');

但是无法识别StateMachine 。我越来越

Undefined type 'App\Api\V1\Controllers\Resource\StateMachine'

我在这里错过了什么吗?我应该在控制器的开头添加一个use语句吗?

编辑:Laravel 5.1 谢谢

标签: laravelpackagecomposer-phpservice-provider

解决方案


如果您使用的是最新版本和自动发现工具,则无需使用以下行。

从 5.5 版本开始,Laravel 使用包自动发现,因此您无需手动添加 ServiceProvider 和外观。如果您不使用自动发现或者您使用的是旧版本,请在 config/app.php 中添加服务提供者和外观。

<?php

'providers' => [
    Sebdesign\SM\ServiceProvider::class,
],

'aliases' => [
    'StateMachine' => Sebdesign\SM\Facade::class,
],

在 composer require 之后需要直接运行这个命令。

php artisan vendor:publish --provider="Sebdesign\SM\ServiceProvider"

您需要根据您的 laravel 版本安装兼容版本的软件包。

composer require sebdesign/laravel-state-machine:^1.0

然后你需要按如下方式使用它:

use \SM\Factory\Factory as SMFactory;

推荐阅读