2016-10-24 3 views
1

J'ai une forme nommée Account_UserDetails, à laquelle j'essaye d'ajouter une sorte de wrapper, parce que c'est juste affiché comme un tas de LI. J'ai besoin d'un emballage autour de la forme pour mieux le contrôler (comme un UL). J'ai essayé le suivant mais il ne semble pas montrer dans le navigateur du tout. Qu'est-ce que je fais mal?Orchard: Ajouter un wrapper à une forme dans ShapeTableProvider ShapeTableBuilder

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Orchard.DisplayManagement.Descriptors; 

namespace Onestop.Themes.LOEH 
{ 
    public class ShapeDataProvider : IShapeTableProvider 
    { 
     public void Discover(ShapeTableBuilder builder) 
     { 
      builder.Describe("Account_UserDetails").OnDisplaying(context => { 
      context.Shape.Wrappers.Add("ul"); 
      }); 
     } 
    } 
} 
+1

Je suis étonné de savoir pourquoi vous créez un wrapper juste pour avoir tout dans une étiquette UL. N'est-il pas plus simple de mettre cette balise dans le gabarit pour la forme elle-même? –

+0

Je ne peux pas accéder à la forme elle-même, seulement le Placement.info sur le thème. –

+0

Pourquoi auriez-vous accès à 'placement.info' mais ne seriez pas en mesure d'ajouter un modèle de remplacement pour la forme? –

Répondre

1

enrubanneuse en Orchard sont des formes, vous pouvez les ajouter comme suit:

builder.Describe("Account_UserDetails").OnDisplaying(context => { 
    context.Shape.Metadata.Wrappers.Add("Account_UserDetails_Wrapper"); 
}); 

Ensuite, vous devez ajouter la forme d'emballage comme Account_UserDetails_Wrapper.cshtml:

<div> 
    @DisplayChildren(Model) 
</div> 

si vous avez besoin de plus informations sur les emballages, veuillez vous référer à cette link

+0

c'est ce que je veux faire, mais ce n'est pas générer cette forme du tout. En fait, il ne fonctionne que si j'ajoute ce qui suit au fichier Placement.info: –

+0

Account_UserDetails = "/ Header_Solo_Secondary: 2; Wrapper = ListWrapper" /> –

+0

soit, vous l'ajoutez dans ShapeTableProvider ou avec placement.info vous devez créer la forme wrapper moi-même – mdameer