mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
/*
|
|
Package main shows how to add done handlers in an MVC application without
|
|
the necessity of `ctx.Next()` inside the controller's methods.
|
|
|
|
When we want the `Done` handlers of that specific mvc app's `Party`
|
|
to be executed but we don't want to add `ctx.Next()` on the `exampleController#EndRequest`
|
|
*/
|
|
package main
|
|
|
|
import (
|
|
"github.com/kataras/iris/v12"
|
|
"github.com/kataras/iris/v12/mvc"
|
|
)
|
|
|
|
func main() {
|
|
app := iris.New()
|
|
app.Get("/", func(ctx iris.Context) { ctx.Redirect("/example") })
|
|
|
|
exampleRouter := app.Party("/example")
|
|
{
|
|
exampleRouter.SetExecutionRules(iris.ExecutionRules{
|
|
Done: iris.ExecutionOptions{Force: true},
|
|
})
|
|
|
|
exampleRouter.Done(doneHandler)
|
|
|
|
m := mvc.New(exampleRouter)
|
|
m.Handle(&exampleController{})
|
|
}
|
|
|
|
app.Listen(":8080")
|
|
}
|
|
|
|
func doneHandler(ctx iris.Context) {
|
|
ctx.WriteString("\nFrom Done Handler")
|
|
}
|
|
|
|
type exampleController struct{}
|
|
|
|
func (c *exampleController) Get() string {
|
|
return "From Main Handler"
|
|
// Note that here we don't binding the `Context`, and we don't call its `Next()`
|
|
// function in order to call the `doneHandler`,
|
|
// this is done automatically for us because we changed the execution rules with the
|
|
// `SetExecutionRules`.
|
|
//
|
|
// Therefore the final output is:
|
|
// From Main Handler
|
|
// From Done Handler
|
|
}
|