我有一个名为 Vara 的类,其中有一个名为 searchname 的表字段。我想对 cviebrock eloquent sluggable 进行简单设置,但无法弄清楚问题所在。
当我保存我的模型时,没有任何反应,它会重写存储的旧值。
如果我将 build_from 更改为 whatthefuckisgoingon,我会得到相同的输出。我有一个名为 handle 的字段,也尝试将字段名称更改为 slug 但结果相同。如果我将 build_from 留空,我也会得到相同的输出。
但是,如果我将 save_to 更改为不存在的内容,我会收到错误消息。 searchname 字段确实有一个值“Hjordnära test 33 liter”,所以输出真的很奇怪。
我的猜测是 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);对于我的 Controller ,slug 正在被保存,所以现在的问题是为什么它不会在 $vara->save();
上自动 sluggify最佳答案
很可能,这是一个验证问题,因为您使用的是 Ardent :
Ardent is a package that "provides self-validating smart models for Laravel Framework 4's Eloquent ORM"
检查您的规则并使用 if
语句:
if(! $vara->save()) // if model is invalid
dd($vara->errors());
如果你不需要检查验证,你可以使用
$vara->forceSave();
要将 Eloquent sluggable 与 Ardent 集成,请查看此 link
关于php - eloquent-sluggable build_from 被忽略了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548026/