您好,我怎样才能在我的项目中重复使用独特的段塞逻辑。我有一种方法可以在我的产品模型中创建一个独特的slug,我想在我的其他模型中使用相同的逻辑:
/**
* Set the name attribute and automatically the slug
*
* @param string $name
*/
public function setNameAttribute($name)
{
$this->attributes['name'] = $name;
if(! $this->exists)
{
$this->setUniqueSlug($name, '');
}
}
/**
* Recursive routine to set a unique slug
*
* @param string $name
* @param mixed $extra
*/
public function setUniqueSlug($name, $extra)
{
$slug = str_slug($name . '-' . $extra);
if (static::whereSlug($slug)->exists())
{
$this->setUniqueSlug($name, $extra + 1);
return;
}
$this->attributes['slug'] = $slug;
}
答案 0 :(得分:0)
有许多方法,您可以创建一个从eloquent扩展的Base模型类,然后从该基础模型扩展其余模型。创建方法" setUniqueSlug"在该基础模型中可以从任何其他模型访问。 或者你可以创建一个Helper类,这样你就可以调用" setUniqueSlug"从任何地方。
答案 1 :(得分:0)
Martin Beans评论是最好的解决方法。
Paul Vidal的方式没有任何问题,但是,我不会使用基本模型方法,除非你要在每个模型中使用它。
只要你没有为slug使用不同的字段名称并且你使用像父slug这样的东西(例如product / {slug})你应该能够将上面的代码直接放入一个特征然后use
进入你想要的模型。
希望这有帮助!