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!
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!
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.