运行php artisan供应商的ErrorException:使用Elqouent-Sluggable发布

时间:2015-12-28 21:48:42

标签: laravel-5

我正在使用Laravel 5并尝试安装Eloquent-Sluggable。我已按照installation instructions中的所有步骤进行操作:

  1. composer require cviebrock/eloquent-sluggable
  2. composer update
  3. Cviebrock\EloquentSluggable\SluggableServiceProvider::class添加到config/app.php
  4. 中的提供商
  5. php artisan vendor:publish
  6. 最后一步导致出现此错误消息:

      

    [ErrorException]参​​数2传递给   Cviebrock \ EloquentSluggable \ SluggableTableCommand :: __ construct()必须是Illuminate \ Foundation \ Composer的一个实例,实例   给出了Illuminate \ Support \ Composer,调用了   C:\ WAMP \ WWW \博客\供应商\ CVI   第92行的ebrock \ eloquent-sluggable \ src \ SluggableServiceProvider.php并定义了

    导致错误发生的原因是什么?

2 个答案:

答案 0 :(得分:1)

它也发生在我身上。这是因为SluggableTableCommand在其构造函数中需要Composer实例,但偶然会传递不同类型的实例。

这可能不是解决此问题的最明智的方法,但如果您匆忙,可以在$composer构造函数中的SluggableTableCommand之前删除Composer声明。您需要编辑的文件是第44行的vendor/cviebrock/eloquent-sluggable/src/SluggableTableCommand.php

这应该有效:

 /**
 * Create a new migration sluggable instance.
 *
 * @param SluggableMigrationCreator $creator
 * @param Composer $composer
 */
public function __construct(
  SluggableMigrationCreator $creator,
  $composer
) {
    parent::__construct();

    $this->creator = $creator;
    $this->composer = $composer;
}

答案 1 :(得分:0)

当我尝试通过控制台命令创建迁移时,使用Laravel 5.2.29时出现了相同的错误

php artisan sluggable:table posts slug

解决了这个问题的是创建常规的Laravel迁移,但是之前我已经在config / app.php文件中注释了'Cviebrock \ EloquentSluggable \ SluggableServiceProvider :: class'行。

php artisan make:migration add_slug_to_posts_table

以及迁移文件中的下一个代码

public function up(){
    Schema::table('posts', function(Blueprint $table){
        $table->string('slug')->nullable();
    });
}

public function down(){
    Schema::table('posts', function(Blueprint $table){
        $table->dropColumn('slug');
    });
}

并运行迁移

 php artisan migrate