2010-07-17 19 views

Répondre

3

Une partie provient d'un fichier:

include_partial('thing', $params) comprendra _thing.php avec $ params dans son champ d'application.

machines à sous ne sont pas des fichiers, mais mis quelque part ailleurs dans le modèle/contrôleur:

slot('title', 'Home Page');
echo '<title>'.slot('title').'</title>'

+0

est-il possible de définir le cache false pour slot ?? comme nous pouvons avec le composant ... – hardik

1

Vous pouvez penser à une fente comme une définition de méthode OO. Votre disposition définit les emplacements. Le modèle étend la disposition et remplit ces emplacements (en écrasant les méthodes). Vous pouvez également avoir un contenu par défaut pour un emplacement, qui est affiché lorsqu'il n'est pas écrasé.

Les partiels d'un autre côté seraient comme la composition. Ils sont un composant réutilisable auquel les modèles peuvent accéder. En gros, ils sont l'équivalent d'une simple instruction include, mais vous transmettez les variables qu'il utilise.

Cette page fait un très bon travail à expliquer les concepts: http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer

4

La principale différence entre les machines à sous et Partials est que le rendu d'un emplacement donné réside dans un certain modèle. En revanche, le partiel est simplement une inclusion d'un modèle dans un autre modèle.

« Fondamentalement, une fente est un espace réservé que vous pouvez mettre dans l'un des éléments de vue (dans la mise en page, un modèle ou une partie). Remplir cet espace réservé est comme définir une variable. Le code de remplissage est stocké globalement dans la réponse, vous pouvez donc le définir n'importe où (dans la mise en page, un gabarit ou un partiel) Assurez-vous de définir un emplacement avant de l'inclure et rappelez-vous que la mise en page est exécutée après le gabarit le processus de décoration), et les partiels sont exécutés lorsqu'ils sont appelés dans un modèle. "

Des exemples de façons d'utiliser chacun sont les suivants:

  • Titre de votre page - serait probablement placé dans une fente (ou dans l'aide de titre), et alors vous dans votre mise en page vérifier si la emplacement a été défini et ensuite le montrer.
  • Articles de la barre latérale - Disons que vous avez 3 "slots" de la barre latérale, vous auriez alors trois slots, par exemple "sidebar-1", "sidebar-2" et "sidebar-3". Dans votre modèle, vous définissez alors l'emplacement, qui peut être rendu en utilisant un partiel (ou même un composant) si vous le souhaitez.

J'espère que cela l'a clarifié un peu.