Laravel软件包/服务提供商添加

时间:2020-04-20 07:37:09

标签: laravel package composer-php service-provider

我正在尝试在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 谢谢

1 个答案:

答案 0 :(得分:0)

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

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

<?php

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

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

根据作曲家的要求,您需要直接运行此命令。

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

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

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

然后您需要按以下方式使用它:

use \SM\Factory\Factory as SMFactory;