Май 21

Zend Framework предоставляет ряд помощников (Helpers), которые используются во view скриптах. К ним относятся, например: хелперы для создания разных HTML элементов, для построения ссылок, для экранирования вывода (escape) и другое. Но иногда возникает необходимость в создании  собственного (custom) view helper. Рассмотрим рекомендации по этому поводу.

Helper представляет собой класс, который должен соблюдать некоторые требования:

  • Имя класса должно заканчиваться именем хелпера
  • Helper должен иметь public метод, имя которого совпадает с именем хелпера
  • Метод не должен использовать echo или print функции - необходимо возвращать значение
  • Необязательная рекомендация: разработчики Zend Framework советуют наследоваьб свой view helper класс от Zend_View_Helper_Abstract или имплементировать интерфейс Zend_View_Helper_Interface (в следующих релизах ZF планируется упростить набор правил для создания custom view helper, которые приведены выше)

Что ж, попробуем написать свой помощник вида.

В Smarty есть модификатор, который отрезает часть текста - truncate. Его можно использовать, например при выводе анонса новостей. Создадим и мы helper, который реализует данный функционал.

  • Создаем класс, который находится по такому пути: library/Custom/View/Helper/Truncate.php (используется классическая структура директорий Zend Framework)
<?php
class Custom_View_Helper_Truncate extends Zend_View_Helper_Abstract
{
    public function truncate($string, $length = 50, $postfix = ‘…’)
    {
        $truncated = trim($string);
        $length = (int)$length;
        if (!$string) {
            return $truncated;
        }
        $fullLength = iconv_strlen($truncated, ‘UTF-8′);
        if ($fullLength > $length) {
            $truncated = trim(iconv_substr($truncated, 0, $length, ‘UTF-8′)) . $postfix;
        }
        return $truncated;   
    }
}
  • Добавляем путь к view хелперам в нашем bootstrap файле
<?php
$layout = Zend_Layout::startMvc(array(‘layoutPath’ => ‘../application/layouts’));
$layout->getView()->addHelperPath(‘Custom/View/Helper’, ‘Custom_View_Helper’);
?>

После этого наш хелпер готов к употреблению ))) В скрипте вида используем его так:

<?php
$this->truncate($this->someBigString, 100);
?>

P.S.: данный helper корректно работает с любой кодировкой (iconv рулит, но можно и заменить на multibyte string functions)

Май 15

Не мог сдержаться, чтоб не написать это в блог:

У конкурсі “Україна очима москалів” переміг пан Василь зі Львова, який виклав очима москалів триметрове слово “Україна”.

Май 6
Javascript + IE7 problem
icon1 Snowcore | icon2 IE, javascript | icon4 05 6th, 2009| icon37 Comments »

Каждый второй день Internet Explorer заставляет меня ОХРЕНЕВАТЬ. Сегодняшний день - не исключение :)

Казалось бы: банальная функциональность:

  • отправка AJAX запроса на сервер
  • получение ответа с сервера (в виде HTML)
  • вставка полученного HTML в документ

В ответе сервера есть примерно такая строчка:

<script type=“text/javascript”>
<!–
    alert(‘Data has been saved’);
//–>
</script>

Обратите внимание, что javascript код обернут в конструкцию <!– и //–>
В этом случае наш любимый IE не выведет сообщение (alert не сработает), а консоль ошибок скажет нам: “Syntax error“. Извините, может я чего не понимаю, но в каком тут месте синтаксическая ошибка??
А вот если убрать конструкцию c комментариями, то все работает нормально:

<script type=“text/javascript”>
	alert(‘Data has been saved’);
</script>

Кто-то может объяснить?

WTF ???

P.S.: Блин, еще и двойные дефисы посъедались… (там их два, так что не обращайте внимание)

P.P.S.: Вот еще оказалось что лучше не пользоваться методом remove() (prototype.js), так как в IE он не всегда работает

Май 5

Каждый раз, когда разработчик создает новый сайт, ему приходится выполнять кучу рутинной работы. Одной из задач является добавление сайта в поисковые системы. Я решил поделиться со всеми ссылками, которыми пользуюсь для добавления сайтов в поисковики. На самом деле можно было бы воспользоваться AllSubmitter или PagePromoter :) Данный пост я буду пополнять новыми ссылками и разделами. Здесь можно посмотреть список поисковиков для бесплатного добавления URL вашего сайта. Ну а пока:

Добавление сайта в поисковые системы

« Previous Entries Next Entries »