Comment puis-je diviser un modèle de HAML dans différentes partials / includes en PHP?

StackOverflow https://stackoverflow.com/questions/3781902

  •  04-10-2019
  •  | 
  •  

Question

Je suis un dev PHP essayer de commencer à utiliser HAML, en utilisant cette mise en œuvre: http://phphaml.sourceforge.net/

HAML semble impressionnant, mais je ne comprends pas si / comment il prend en charge partials (ou comprend, comme on les appelle dans le monde PHP).

Je voudrais avoir un fichier HAML modèle maître qui va alors et charges un tas de partials pour tous les petits morceaux. (Ensuite, je peux réutiliser ces morceaux dans d'autres modèles aussi.)

En PHP ou Ruby ce serait vraiment facile, est-il possible de le faire avec HAML? merci!

dylan

Était-ce utile?

La solution

Tout à fait une vieille question, mais je l'ai mis à jour le code source de phpHaml pour refléter cette nouvelle fonctionnalité!

Consultez commit @github https://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f

Autres conseils

Vous pouvez créer une méthode globale de render_haml_partial par analogie avec la méthode de display_haml existante phpHaml qui pourrait ressembler à:

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

Cette méthode pourrait être placé dans le fichier HamlParser.class.php de phpHaml il est donc accessible à tous vos modèles.

La seule différence entre cela et display_haml est qu'il invoque fetch au lieu de display à la fin et renvoie le résultat de sorte que vous pouvez ensuite l'insérer dans place dans le modèle invocateur.

Vous pouvez ensuite l'utiliser dans vos modèles PHP / HAML comme suit:

= render_haml_template("path to partial")

Ce serait alors très similaire à la syntaxe Rails / HAML:

= render :partial => 'path to partial'

Notez que l'utilisation display_haml ne directement pas tout à fait le même effet, car il rend le modèle directement à la sortie au lieu de retourner le résultat à l'appelant. vous pouvez donc faire ce qui suit:

- display_haml("path to partial")

Mais cela ne tient pas le résultat du rendu.

Je devine que quelqu'un qui se soucie assez sur phpHaml pourrait ajouter un render_haml_partial ou quelque chose de semblable à terme -. Je pourrais suggérer à l'auteur un peu de temps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top