Если встроенный хелпер (или представленный на Cakeforge Пекарни) не подходит вам, то хелперы легко создать.
Допустим, мы хотим создать хелпер, который будет использоваться в различных местах вашего приложения для вывода, специально созданного (со стилями из CSS) линка. Для этого вам необходимо создать новый класс в /app/views/helpers. Давайте назовем наш хелпер LinkHelper. Реальный PHP файл с классом будет выглядеть так:
<?php
/* /app/views/helpers/link.php */
class LinkHelper extends AppHelper {
function makeEdit($title, $url) {
// здесь код по созданию линка ...
}
}
?>
В Helper классе CakePHP существует несколько методов, которые вы можете захотеть использовать:
Используйте эту функцию для передачи любых данных обратно в ваше отображение.
<?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 (если сессии включены) всегда доступны.
<< Использование помощников | Создание функциональности для всех помощников >>