Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'ai un formulaire pour poster des articles. Dans le formulaire j'ai un champ qui a pour name=title, un champ de type=hidden qui a pour name
slug et value="". Maintenant dans mon model Article J'ai crée un Mutateur pour générer automatiquement le slug grâce au title

<?php

namespace ndf;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;

class Article extends Model
{
    protected $fillable = ['id', 'title', 'slug', 'url', 'content', 'in_top', 'author', 'status', 'comment_status',
        'online', 'brouillon', 'modified_at', 'modified_at_gmt', 'comment_count', 'category_id',
        'created_at', 'updated_at'];

    public function category()
    {
        return $this->belongsTo('ndf\Category');
    }

    public function setSlugAttribute($value)
    {
        if (!empty($value)) $this->attributes['slug'] = "";
        return $this->attributes['slug'] = Str::slug($this->title);
    }

Ce que je veux

Je veux que le Mutateur genère le slug grâce au title

Ce que j'obtiens

Quand je $this->title je n'obtiens aucune valeur. Ce qui empêche la création du slug.

1 réponse


Salut,

public function setTitleAttribute($value)
{
    $this->attributes['slug'] = str_slug($value);
}

Passes directement dans l'attribut title pour générer le slug ;)