Я хочу углубиться в тему просмотра помощников и частичных помощников. Я попытался с элементом treeview учебника, который работает очень хорошо. Это был бы хороший пример, чтобы попытаться с помощью помощников взглядов, которые я думал, но я потерян. В моем понимании рекурсивная часть должна быть частичной ?! Может кто-нибудь объяснить, как разбить следующую функцию в разных вспомогательных частях? И как реализовать на мой взгляд?пример для просмотра и частичных помощников
function treeview($array, $currentParent, $currLevel = 0, $prevLevel = -1) {
foreach ($array as $categoryId => $category) {
if ($currentParent == $category['parent_id']) {
if ($currLevel > $prevLevel) echo " <ol class='tree'> ";
if ($currLevel == $prevLevel) echo " </li> ";
echo '<li> <label for="subfolder2">'.$category['name'].'</label> <input type="checkbox" name="subfolder2"/>';
if ($currLevel > $prevLevel) { $prevLevel = $currLevel; }
$currLevel++;
treeview ($array, $categoryId, $currLevel, $prevLevel);
$currLevel--;
}
}
if ($currLevel == $prevLevel) echo " </li> </ol> ";
}
Мой взгляд выглядит следующим образом:
require_once('../application/library/Treeview.php');
header("Content-Type: text/html; charset=utf-8");
echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/tree.css');
$this->title = "Treeview Test";
$this->headTitle($this->titel);
$arrayCategories = array();
foreach($this->treeviewitems as $row) :
$arrayCategories[$row['id']] = array("parent_id" => $row['parent_id'], "name" =>$row['name']);
endforeach;
treeview($arrayCategories, 0);
EDIT, потому что имен и проблема пути:
Новый глава ViewHelper:
class Application_View_Helper_Treeview extends Zend_View_Helper_Abstract
{
public function treeview($array, $currentParent, $currLevel = 0, $prevLevel = -1) {
путь в моей application.ini (как вы можете видеть, я пробовал раньше с именованием)
resources.view.helperPath.Company_View_Helper = "Company/View/Helper"
resources.view.helperPath.Britta_View_Helper = "Britta/View/Helper"
resources.view.helperPath.Application_View_Helper = APPLICATION_PATH "/views/helpers"
resources.view.helperPath.Zend_Dojo_View_Helper = "Zend/Dojo/View/Helper"
и теперь путь, где я сохранил файл ViewHelper:
Имя: Treeview.php путь: C: \ WAMP \ WWW \ riba_doc \ приложения \ Views \ хелперы
Ошибка: Fatal Ошибка: вызов неопределенной функции treeview() в C: \ wamp \ www \ riba_doc \ application \ views \ scripts \ treeview \ index.phtml в строке 13
это работает, и я понял техника ;-)))) –
нет, он не работает, прежде чем моя старая функция была загружена, см. Мое редактирование выше. Должна быть проблема с именами и путями. –
@ pia-sophie: Является ли ваш вызов в скрипте view фактически '$ this-> treeview()' или просто 'treeview()'? В контексте сценария вида '$ this' является объектом View, который, поскольку мы настроили его через конфигурацию' resource.view', будет знать, как разрешить имя класса и пути для finf метода, который мы хотим вызов. –