eloquent-sluggable build_from被忽略了

时间:2014-12-18 13:45:13

标签: php laravel

我有一个名为Vara的类,我有一个名为searchname的表字段。我想做一个简单的cviebrock雄辩设置,但是无法弄清楚问题是什么。

当我保存模型时,没有任何反应,它会重写存储的旧值。

如果我将build_from更改为,那么我会得到相同的输出。我有一个名为handle的字段,也尝试将字段namne更改为slug但结果相同。如果我将build_from留空,我也会获得相同的输出。

但是,如果我将save_to更改为不存在的内容,则会出现错误。 searchname字段的值为“Hjordnäratest33升”,因此输出真的很奇怪。

我的猜测是build_from被忽略,并被视为null。我该如何解决这个问题?

我的Vara.php看起来像这样

use Cviebrock\EloquentSluggable\SluggableInterface;
use Cviebrock\EloquentSluggable\SluggableTrait;

class Vara extends \Eloquent implements SluggableInterface {

use SluggableTrait;

protected $sluggable = array(
    'build_from' => 'searchname',
    'save_to'    => 'handle'
);

在我的VarorController.php

public function saveVara() 
{

    $id = Input::get('id');

    $vara = Vara::find(Input::get('id'));

    $vara->edited_by = Auth::user()->id;

    $vara->searchname        = Input::get('searchname');
    $vara->save();

    return $vara->getSlug();

确定更新,在SluggableTrait.php中找到此功能

public function sluggify($force=false)
    {
        $config = \App::make('config')->get('eloquent-sluggable::config');
        $this->sluggable = array_merge( $config, $this->sluggable );
        if ($force || $this->needsSlugging())
        {
            $source = $this->getSlugSource();
            $slug = $this->generateSlug($source);
            $slug = $this->validateSlug($slug);
            $slug = $this->makeSlugUnique($slug);
            $this->setSlug($slug);
        }
        return $this;
    }

所以,如果我添加$ vara-> sluggify(true);对我的控制器来说,slug正在被保存,所以现在的问题就是为什么它不会自动地在$ vara-> save();

1 个答案:

答案 0 :(得分:0)

最有可能的是,这是一个验证问题,因为您使用的是Ardent

  

Ardent是一个“为Laravel Framework 4的Eloquent ORM提供自我验证智能模型”的软件包

检查您的规则并使用if声明:

if(! $vara->save()) // if model is invalid
    dd($vara->errors());

如果您不需要检查验证,可以使用

$vara->forceSave();

要将Eloquent sluggable与Ardent整合,请查看此link