Задать вопрос
@zifmezin

Yii2 SluggableBehavior не генерит slug при создании объекта из очереди /queue?

Всем привет.
Уже который день бьюсь с проблемой генерации slug (ЧПУ) при генерации статьи в очередях (

Есть массив, я прохожусь по нему и каждый элемент отправляю в задачу UpdatePlaceJob
foreach ($array as $object) {
$object = $object->data->general;
Yii::$app->queue->push(new UpdatePlaceJob([
   'object' => $object,
]));


В этой задаче формирую статью и сохраняю ее.
public $place;

    public function execute($queue)
    {
        $object = $this->object;
        $place = Place::findOne(['title' => $object->name]);
        $place->status = Place::STATUS_UPDATED;
        $place->text = $object->description;
        $place->save();


В самой модели прописано поведение для генерации slug
public function behaviors()
    {
        return [
            [
                'class' => SluggableBehavior::class,
                'attribute' => 'title',
                'slugAttribute' => 'slug',
                'ensureUnique' => true,
                'immutable' => true,
            ],


В итоге все работает, статья создается/обновляется, но slug не генерируется.
Если все то же самое сделать без отправки очереди (напрямую в контрллере) - то все срабатывает. Не работает именно из очереди. Что с валидацией ($place->validate();), что без.

Кто может что подсказать? Или хотя бы как получить ошибку, потому как из систем очередей не знаю как отловить ошибку (если она вообще есть)
Спасибо
  • Вопрос задан
  • 185 просмотров
Подписаться 3 Простой 2 комментария
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
К самому SluggableBehavior это не имеет отношение. Разница очевидна — первый запускается через Web Controller, а второй через очередь из Console Controller. Это значит, что какие-то конфигурации php в консоли и на web отличаются.

SluggableBehavior сильно зависит от расширения PHP php*-intl. Скорее всего, в консоли у вас его нет, поэтому и не работает должным образом. Попробуйте установить его для php который работает с очередями.

Ну а если это не помогает – смотрите логи не только Yii, но и php.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы