Страница 1 из 1

Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.25, 22:34
nickdenry
В документации не указано, что для корректной работы SluggableBehavior требуется php-intl. Также php-intl нет в зависимостях, код просто не работает, пока не установлен php-intl.

Нашел информацию в старой теме:
https://www.yiiframework.ru/forum/viewtopic.php?t=19445

Предлагаю добавить в документацию.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.26, 14:13
samdark
Да, можно. pull request сделаете?

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.26, 21:01
nickdenry
С удовольствием, только я не нашел этой статьи в yii2/docs

https://github.com/yiisoft/yii2/find/master

В cookbook немного не то

https://github.com/samdark/yii2-cookboo ... g-slugs.md

Где искать?

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.26, 21:31
samdark
В phpdoc самого класса.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.26, 23:12
nickdenry
Отлично. Напишу здесь текст для согласования.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 00:31
nickdenry
Получилось два вот таких варианта:

1. Note: This behavior depends on php-intl extension installed.

2. Note: You should have php-intl package installed for SluggableBehavior works.

Например,

Код: Выделить всё

/**
 * SluggableBehavior automatically fills the specified attribute with a value that can be used a slug in a URL.
 *
 * Note: This behavior depends on php-intl extension installed.
 *
 * To use SluggableBehavior, insert the following code to your ActiveRecord class:
 *
 * ```php
 * use yii\behaviors\SluggableBehavior;
 *
 * public function behaviors()
 * {
 *     return [
 *         [
 *             'class' => SluggableBehavior::className(),
 *             'attribute' => 'title',
 *             // 'slugAttribute' => 'slug',
 *         ],
 *     ];
 * }
Склоняюсь к первому варианту.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 01:03
samdark
Да, первый норм. Второй немного некорректен с точки зрения языка, да и длиннее.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 01:52
nickdenry
Готово. Issue открывать?

https://github.com/yiisoft/yii2/pull/15997

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 13:25
samdark
Не, всё уже в master.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 13:26
samdark
Спасибо.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 16:11
nickdenry
Дополнено отлично, спасибо.

Код: Выделить всё

+ * Note: This behavior relies on php-intl extension for transliteration. If it is not installed it
+ * falls back to replacements defined in [[\yii\helpers\Inflector::$transliteration]].
Мне немного не нравится, что явно не проговаривается ситуация, что slug возвращается пустой без php-intl. Т.е. fallback не содержит кириллицы (и не только), это понятно, slug возвращается пустой, человек лезет в документацию и видит наше замечание. Да, вроде достаточно. Спасибо еще раз.

UPD. Или все-таки лезет на форум, - не работает же :)

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 20:43
zelenin
коллеги, а не судьба исключение выкинуть, если нет расширения?
так же это называется intl extension или php intl extension, но не php-intl. php-intl - это одно из версий названия пакета на некоторых осях. Пакет может быть разным, а может и не быть пакета.

Re: Добавить информацию о php-intl в документацию SluggableBehavior

Добавлено: 2018.03.28, 23:52
nickdenry

Код: Выделить всё

коллеги, а не судьба исключение выкинуть, если нет расширения?
Вот я как-то пытался это сформулировать, но не вышло. Но, с другой стороны, поведение не работает не вообще, а только если символов языка (например, кириллицы) нет в \yii\helpers\Inflector::$transliteration. Т.е. без расширения intl есть fallback, но он не работает (работает не всегда).

Мне не очень понятно, как правильно разрешить эту ситуацию пока. С замечанием однозначно лучше, чем без него.