Как я могу разделить шаблон HAML на различные части / включения в PHP? - PullRequest
1 голос
/ 23 сентября 2010

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

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

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

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

Дилан

Ответы [ 2 ]

3 голосов
/ 24 сентября 2010

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

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);
}

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

Единственная разница между этим и 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 или что-то подобное - я мог бы предложить его автору когда-нибудь.

2 голосов
/ 17 мая 2011

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

Проверьте коммит @github https://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f

...