[web-devel] [ Yesod ][ Newbie ][ Widgets ] Ways of adding app manu
Kamil Ciemniewski
ciemniewski.kamil at gmail.com
Fri Jul 1 15:43:21 CEST 2011
Hi all,
I'm trying to add to my "admin layout" main menu in Yesod.
Normally - doing it in Rails - I would create a partial
or helper and then use it in my layout file.
But here in Yesod - the concept of widgets seems
somewhat fereign to me. I don't quite get them.
In my Handler.Admin module I define:
adminLayout :: GWidget MyApp MyApp () -> GHandler MyApp MyApp RepHtml
adminLayout widget = do
mmsg <- getMessage
mroute <- getCurrentRoute
pc <- widgetToPageContent $ do
widget
hamletToRepHtml $(hamletFile "admin/admin-layout")
then I define my widget ( all in the same file ):
mainMenu :: Widget ()
mainMenu =
addWidget $(widgetFile "admin/_menu")
And finally in "admin/admin-layout.hamlet" I'm trying to render my menu:
...
^{mainMenu}
...
All without a luck.. Compiler yells at me strange ( to me ) things:
Handler/Admin.hs:31:27:
Couldn't match expected type `GGWidget
MyApp (GHandler MyApp MyApp) ()'
with actual type `(url0 -> [(T.Text, T.Text)] -> T.Text)
->
blaze-html-0.4.1.1:Text.Blaze.Internal.Html'
Expected type: Widget ()
Actual type: hamlet-0.8.1:Text.Hamlet.Quasi.Hamlet url0
In the return type of a call of `pageBody'
In the first argument of
`hamlet-0.8.1:Text.Hamlet.Quasi.fromHamletValue', namely
`pageBody pc'
Which doesn't occur when I'm not trying to render "mainMenu" widget.
What am I doing wrong? And are there any informations about using widgets
anywhere?
( because I haven't found many.. )?
Best regards
Kamil Ciemniewski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/web-devel/attachments/20110701/18d01326/attachment.htm>
More information about the web-devel
mailing list