Хелперы в Yii. Для чего и как использовать.

Нет картинки Иногда удобно какую-то свою функцию (или несколько собственных функций) использовать по всему приложению, тогда мы помещаем их в хелпер.

Хелпер в Yii используется для ваших собственных функций (специальных пользовательских функций). Эти функции вы сможете использовать из любого места приложения. Из названия следует, что эти функции-помощники играют вспомогательную роль (что-то считают, обрабатывают, преобразовывают). 

1) Создаём папку helpers в директории protected, в которую помещаем свои хелперы. Например мы взяли за основу хелпер из приложения Yii catalog (спасибо автору за хороший пример!), назвали его CLocoHelper.php, вот функция, меняющая окончание слова 'оценка' в зависимости от количества оценок к конкретной статье:

<?php
class CLocoHelper
{

...
    public static function GetFormatWord($word, $number)
    {
        $num = $number % 10;
        if ($word == 'оценка') {
            if ($num == 1 && substr($number,-2,2) != 11)
                return 'оценка';
            elseif ($num > 1 && $num < 5)
                return 'оценки';
            else
                return 'оценок';
        }
    } ...

2) В config/main.php добавим строку, чтобы функции из этого хелпера подгружались, когда мы к ним обращаемся:

	// autoloading model and component classes
	'import'=>array(
		'application.models.*',
		'application.components.*',
		...
                'application.helpers.*',
	),

Немного съедается скорость загрузки приложения, когда import содержит много всего, но у нас пока не много всего.

3) Теперь в виде мы используем функцию из хелпера:

<?php
			$data->ShowRating();
			echo '<span>&nbsp;&nbsp; '.$data->marksCount.' '
				.CLocoHelper::GetFormatWord('оценка', $data->marksCount).'</span>'
			?>

 

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (3)     Подпишитесь на RSS комментариев к этой статье.

3 комментариев

#496
vladimircape говорит:
June 8, 2012 at 08:10 pm
Зачем, еще в main подключать ,если просто записав Helper в папку components, он уже будет загружаться автоматически.Показать язык
#784
Владимир говорит:
February 26, 2013 at 06:02 pm

Конкретно для такого случая в Yii есть встроенный механизм.

Yii::t('yii','оценка|оценки|оценок',$data->marksCount);

#801
almix говорит:
March 10, 2013 at 10:04 pm
vladimircape, в main подключать надо, потому что я хелпер не в папку components записываю, а в специальную папку helpers для будущих хелперов.