Comment puis-je diviser un modèle de HAML dans différentes partials / includes en PHP?
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
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