PHP Laravel cviebrock / eloquent-sluggable无法正常工作,因为“instanceof SluggableInterface”总是返回false

时间:2014-05-02 05:07:42

标签: php laravel laravel-4 slug instanceof

我试图使用这里找到的Laravel缓存包:https://github.com/cviebrock/eloquent-sluggable

当我保存模型(例如产品)时,可缓慢的功能不会使我的模型变得迟钝。这是今天全新安装的Laravel。

我可以看到事件监听器触发(SluggableServiceProvider.php中的第43行),但似乎if($ model instanceof SluggableInterface)语句永远不会返回true并且永远不会使我的模型变得迟钝。这可能是名称间距问题吗?还有其他想法吗?

这是我的产品型号:

<?php
use Cviebrock\EloquentSluggable\SluggableInterface;
use Cviebrock\EloquentSluggable\SluggableTrait;

class Product extends Eloquent {

  use SluggableTrait;
  protected $sluggable = array(
      'build_from' => 'title',
      'save_to'    => 'slug',
  );
}

当然,我可以通过执行以下操作来手动运行sluggify方法:

$product->sluggify();

但是我想坚持最佳实践,并尝试让mpggify代码在触发模型保存事件时自动运行。

2 个答案:

答案 0 :(得分:7)

implements SluggableInterface添加到您的Product班级

class Product extends Eloquent implements SluggableInterface 
{

}

github上的演示代码:

https://github.com/cviebrock/eloquent-sluggable#updating-your-eloquent-models

答案 1 :(得分:1)

你应该实现SluggableInterface