我正在使用Laravel 5并尝试安装Eloquent-Sluggable。我已按照installation instructions中的所有步骤进行操作:
composer require cviebrock/eloquent-sluggable
composer update
Cviebrock\EloquentSluggable\SluggableServiceProvider::class
添加到config/app.php
php artisan vendor:publish
最后一步导致出现此错误消息:
[ErrorException]参数2传递给 Cviebrock \ EloquentSluggable \ SluggableTableCommand :: __ construct()必须是Illuminate \ Foundation \ Composer的一个实例,实例 给出了Illuminate \ Support \ Composer,调用了 C:\ WAMP \ WWW \博客\供应商\ CVI 第92行的ebrock \ eloquent-sluggable \ src \ SluggableServiceProvider.php并定义了
导致错误发生的原因是什么?
答案 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