Я работаю над проектом, который позволяет опытному пользователю самостоятельно определять способ отображения информации и получать доступ к некоторым базовым API.Например, я предоставляю функцию show_search_box (), чтобы пользователь мог вызывать эту функцию в файле представления, когда он хочет показать стандартное поле поиска, или он мог вызывать функцию с параметрами для настройки формы поиска.
например, этот код в шаблоне будет отображать форму поиска с текстом водяного знака "Введите ключевое слово здесь".
<div><?php show_search_box('Enter keyword here'); ?></div>
То, что я думаю, на самом деле в точности похоже на то, что делает WordPress в своем шаблоне.теги.(http://codex.wordpress.org/Stepping_Into_Template_Tags)
Моя идея состоит в том, чтобы создать класс, который предоставляет все эти функции API и передает экземпляр объекта класса в файл представления, чтобы пользователи могли вызывать функции API в представлении, например:
<div><?php $API->show_search_box('Enter keyword here'); ?></div>
Я думаю, что это будет работать (но еще не проверял), но я предпочитаю предоставлять набор функций прямого вызова, как WordPress. Какой лучший способ сделать это с Kohana 3?
====== Обновление: я протестировал метод передачи объекта $ API для просмотра, и он работает, как и ожидалось.
class API {
public function show_search_box($watermark){....}
}
В контроллере передайте $ API представлению /template
public function action_index()
{
$this->template->API = new API();
}
Затем вызовите функцию внутри представления / шаблона, как описано выше.В отличие от этих методов контроллера, $ API не может получить доступ к переменным контроллера, если они не назначены явно: например, $ API-> setVar ('VarName', $ a_controller_variable), что довольно утомительно, я думаю.