Laravel - Как вызвать функцию из черты загрузки - PullRequest
0 голосов
/ 12 апреля 2019

Я просто создаю Trait для генерации слагов для моих моделей:

<?php

namespace App\Traits;

trait SlugGenerator
{
    public function slugGenerator($slug = null)
    {
        return $slug ?? 'UUIDGeneratorFunction';
    }

    public static function bootSlugGenerator()
    {
        static::creating(function ($model) {
            // How to call slugGenerator() function here?
            $model->slug = slugGenerator();
        });
    }
}

Вопрос в том, как вызвать функцию slugGenerator() внутри моей загрузки черты?

И если яХотите изменить генератор слагов из любой модели, правильно ли я устанавливаю переменную $slug?Пример:

<?php

namespace App\Models;

use App\Traits\SlugGenerator;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use SlugGenerator;

    public function slugGenerator($slug = null)
    {
        return 'customSlug';
    }
}

1 Ответ

0 голосов
/ 12 апреля 2019

Событие получает экземпляр модели, поэтому вы можете вызвать метод для этого экземпляра:

    public static function bootSlugGenerator()
    {
        static::creating(function ($model) {
            $model->slug = $model->slugGenerator();
        });
    }

Документы: https://laravel.com/docs/5.8/eloquent#events

...