chulakov/yii2-typograph

Typograph component for Yii2

Installs: 84

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 5

Forks: 0

Open Issues: 0

Type:typograph-component

1.0.3 2021-12-10 12:49 UTC

This package is auto-updated.

Last update: 2024-04-20 15:45:38 UTC


README

Компонент типографа для Yii2

Пакет позволяет встроить типограф в Yii2-фреймворк. Пакет состоит из поведения и компонента типографа.

Установка

Чтобы установить пакет, нужно в composer.json добавить следующие строки:

"require": {
    "chulakov/yii2-typograph": "^1.0.0",
}

Или набрать команду:

composer require chulakov/yii2-typograph

Способ подключения компонента

В файле common/config/main добавляется компонент. Компонент должен реализовывать интерфейс TypografInterface из пакета chulakov/ch-php-typograph:

return [
	'components' => [
		...
		'typograph' => [
	    	'class' => 'Chulakov\Typograph\TypographComponent',
	    ],
	]
];

В компоненте указан класс типографа по умолчанию TypographFacade

Есть возможность переопределить правила типографа внутри компонента. Для этого в свойства компонента additionalRulesPath и changedRulesPath кладутся пути файлов с новыми правилами типографа и/или с изменениями старых правил. Приведены примерные пути файлов.

Замечание 1: новые правила - правила, которые необходимо добавить к старым
Замечание 2: пример задания конфигурации правил или их изменений (пункт 3-4)

return [
	'components' => [
		...
		'typograph' => [
			'class' => 'Chulakov\Typograph\TypographComponent',
			'additionalRulesPath' => '@common/components/typograph/config/additionalRules.php',
			'changedRulesPath' => '@common/components/typograph/config/changedRules.php',
		],
	]
];

В компоненте TypographComponent реализована функция process, которая типографирует текст:

$typographComponent->process('до н. э.');

Способ подключения поведения

Поведение можно прикреплять к форме и указывать поля, значение которых необходимо типографировть

public function behaviors()
{
	return [
		[
		    'class' => TypographBehaviour::class,
		    'attributes' => ['title']
		],
	];
}

Если поле формы составное, например, если поле является MultipleInput объектом, то его следует задавать в виде массива:

public function behaviors()
{
	return [
		[
			'class' => TypographerBehaviour::class,
			'attributes' => [
			    'items' => [
			        'properties' => ['title', 'description']
			    ]
			]
		],
	];
}

Необходимо, чтобы в конструктор поведения прокидывалась реализация интерфейса TypografInterface
В Yii2 есть способ передачи компонента типографа, реализующего интерфейс TypografInterface, через внедрение зависимостей
Такое можно осуществить, прописав в реализации интерфейса BootstrapInterface код:

\Yii::$container->setSingleton('Chulakov\PhpTypograph\TypografInterface', function() use ($app) {
    return $app->get('typograph');
});