Skip to content

Instantly share code, notes, and snippets.

@josejuan
Created November 13, 2012 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josejuan/4065997 to your computer and use it in GitHub Desktop.
Save josejuan/4065997 to your computer and use it in GitHub Desktop.

Yesod Web Framework

(Tutorial en español)

Este gist se refiere al tutorial Yesod Web Framework y ha sido creado para alojar posibles comentarios, sugerencias, correcciones, etc...

Siéntete libre de comentar!

@arpunk
Copy link

arpunk commented Aug 15, 2013

Hola Jose, acabo de terminar de leer tu tutorial y he aprendido par cosas que no sabía.

En la parte de la creación de formularios, utilizas tu propio tipo de datos sin embargo con persistent puedes utilizar el modelo para crear formularios simples basados en las propiedades de la entidad:

eventEditForm :: Maybe Event -> UTCTime -> Form Event

También puedes reescribir:

postEventEditR :: Int -> Handler RepHtml

Por:

postEventEditR :: EventId -> Handler Html

Y así evitar los lookups a la base de datos por PersistInt64.

Los lookups que haces para verificar si un evento existe o no (imperativo) los puedes reemplazar con una llamada a getBy404 y un case por un Just o Nothing.

Así:

getEventEditR :: EventId -> Handler Html
getEventEditR eventId = do
userId <- requireAuthId
event <- runDB $ selectFirst [EventUser ==. userId, EventId ==. eventId] []
now <- liftIO getCurrentTime

(form, formEnc) <- generateFormPost $ eventEditForm (Just event) now

defaultLayout $ do
setTitle "Edición de evento"
$(widgetFile "eventedit")

Y hacer la población del formulario en eventEditForm, lo mismo con postEditEventR. Claro, la ruta ahora cambia a:

/event/#EventId/edit

Espero haber sido de ayuda. Gran tutorial y uno de los pocos en español.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment