Шаблон пользовательского тега Phalcon

101
10

Есть ли способ создать представление для настраиваемого тега в Phalcon, чтобы я мог просто передать параметры для визуализации?

class MenuModule extends \Phalcon\Tag {
public static function initialize($param) {
return $param;
}
}

На мой взгляд, я могу позвонить

echo MenuModule::initialize('Home Page');

То, что я хочу сделать, это передать массив, например:

$menu = array('Home','About','Contact');
echo MenuModule::initialize($menu);

А затем в Tag Helper вызывать subview для визуализации этого массива вместо следующего:

class MenuModule extends \Phalcon\Tag {
public static function initialize($param) {
$menu = '<ul>';
foreach($param as $p) {
$menu .= '<li>' . $p . '</li>';
}
$menu .= '</ul>';
return $menu;
}
}

Это не так сложно, но я хочу использовать представления вместо генерации HTML внутри PHP из-за больших файлов HTML.

Как я могу это сделать, пожалуйста?

спросил(а) 2015-03-09T00:03:00+03:00 5 лет, 8 месяцев назад
1
Решение
82

Я нашел решение, службу тегов и создание собственных помощников в официальной документации Phalcon.

<?php
use Phalcon\Tag;

class MenuModule extends Tag {
static public function initialize($param) {
$menu = '<ul>';
foreach($param as $p) {
$menu .= '<li>' . $p . '</li>';
}
$menu .= '</ul>';

return $menu;
}
}

Затем измените определение тега службы:

$di['tag'] = function () {
return new MenuModule();
};

А потом в вольт-доступе это вроде:

{{ MenuModule::initialize($param) }}

ответил(а) 2015-08-15T23:10:00+03:00 5 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема