CakePHP: Manual/Developing/Helpers/CreatingHelpers

Создание помощников

Если встроенный хелпер (или представленный на Cakeforge Пекарни) не подходит вам, то хелперы легко создать.

Допустим, мы хотим создать хелпер, который будет использоваться в различных местах вашего приложения для вывода, специально созданного (со стилями из CSS) линка. Для этого вам необходимо создать новый класс в /app/views/helpers. Давайте назовем наш хелпер LinkHelper. Реальный PHP файл с классом будет выглядеть так:

<?php

/* /app/views/helpers/link.php */

class LinkHelper extends AppHelper {

    function makeEdit($title$url) {

        // здесь код по созданию линка ...

    }

}

?>

В Helper классе CakePHP существует несколько методов, которые вы можете захотеть использовать:

output(string $string)

Используйте эту функцию для передачи любых данных обратно в ваше отображение.

<?php

function makeEdit($title$url) {

    // Используем функцию хелпера output для передачи

    // отформатированных данных обратно в отображение:

    return $this->output(

        "<div class=\"editOuter\">

         <a href=\"$url\" class=\"edit\">$title</a>

         </div>"

    );

}

?>


Подключение других хелперов

Вы можете захотеть использовать некоторую функциональность уже существующую в других хелперах. Для этого вы можете определить хелперы, которые хотите использовать, с помощью массива $helpers.

<?php

/* /app/views/helpers/link.php (использование других хелперов) */

class LinkHelper extends AppHelper {

    var $helpers = array('Html');

    function makeEdit($title$url) {

        // Используем HTML хелпер для вывода

        // оформатированных данных:

        $link $this->Html->link($title$url, array('class' => 'edit'));

        return $this->output("<div class=\"editOuter\">$link</div>");

    }

}

?>


Использование вашего хелпера

После того, как вы создали свой хелпер и разместили его в /app/views/helpers/, вы можете подключать его в ваши контроллеры, используя специальную переменную $helpers.

Когда контроллер уже осведомлен об этом новом классе, вы можете использовать этот класс в ваших отображениях через переменную, названную также, как и хелпер:

<!-- создаем линк, используя новый хелпер -->

<?php echo $link->makeEdit('Change this Recipe''/recipes/edit/5'?>

Не забывайте, в случае необходимости, подключать FormHelper в массиве $helpers. 

Хелперы Html и Session (если сессии включены) всегда доступны.

<< Использование помощников | Создание функциональности для всех помощников >>