2010-09-23 1 views
1

Я PHP DEV пытается начать использовать HAML, используя эту реализацию: http://phphaml.sourceforge.net/Как разбить шаблон HAML на разные частичные/включенные в PHP?

HAML выглядит удивительным, но я не понимаю, если/как он поддерживает партиалы (или включает в себя, как они называются в PHP Мир).

Я хотел бы иметь файл шаблона HAML-шаблона, который затем отправляет и загружает кучу партитур для всех маленьких кусочков. (Затем я могу повторно использовать эти фрагменты в других шаблонах тоже.)

В PHP или Ruby это было бы очень просто, есть ли способ сделать это с помощью HAML? благодаря!

Дилан

+0

Я не думаю, что phpHaml поддерживает это еще напрямую. Но вы можете добиться чего-то подобного (но немного другого) с помощью 'display_haml' или написать свой собственный глобальный метод render_haml_partial' - см. Мой ответ для получения подробной информации о том, как выглядит этот метод. –

ответ

2

Довольно старый вопрос, но я обновил исходный код phpHaml, чтобы отразить эту новую функциональность!

Заканчивать фиксации @github https://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f

+0

Я только что проверил изменение на phpHaml. Спасибо за включение этого нового метода! –

3

Вы можете создать глобальный render_haml_partial метод по аналогии с существующим display_haml методом phpHaml, что может выглядеть примерно так:

function render_haml_partial($sFilename, $aVariables = array(), $sTmp = true, $bGPSSC = false) 
{ 
    $sPath = realpath($sFilename); 
    $haml = new HamlParser(dirname($sPath), $sTmp); 
    $haml->append($GLOBALS); 
    if ($bGPSSC) 
    { 
     $haml->append($_GET); 
     $haml->append($_POST); 
     $haml->append($_SESSION); 
     $haml->append($_SERVER); 
     $haml->append($_COOKIE); 
    } 
    $haml->append($aVariables); 
    return $haml->fetch($sFilename); 
} 

Этот метод может быть помещен в файл phpHaml в HamlParser.class.php так он доступен все ваши шаблоны.

Единственное различие между этим и display_haml является то, что он вызывает fetch вместо display в конце и возвращает результат, так что вы можете вставить его на месте в шаблон вызывающего.

Вы бы затем использовать его в PHP/шаблоны Haml следующим образом:

= render_haml_template("path to partial") 

Это затем будет очень похож на синтаксис Rails/Haml:

= render :partial => 'path to partial' 

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

- display_haml("path to partial") 

Но это не отражает результат рендера.

Я предполагаю, что кто-то, кто заботится о phpHaml, может добавить такой render_haml_partial или что-то подобное в конце концов - я мог бы предложить его автору некоторое время.

+0

Это потрясающе, спасибо! – dylanized

 Смежные вопросы

  • Нет связанных вопросов^_^