you do not need to pick view if your app is organized as views/mycontroller/action.volt and you've got an MycontrollerController.php with public actionAction() in it. This is phalcon's default MVC behaviour.

With your problem: "every time i visit /login, Phalcon renders /login/index but also calls index/index", does it also render index/index.volt html ?

I tried with the default MVC controller/view routing (not using pick). Same result.

Yes, when I access /login, it renders /views/login/index.volt and (always) hits /views/index/index.volt too.

Can't figure out why

Hi,

you do not need to pick view if your app is organized as views/mycontroller/action.volt and you've got an MycontrollerController.php with public actionAction() in it. This is phalcon's default MVC behaviour.

With your problem: "every time i visit /login, Phalcon renders /login/index but also calls index/index", does it also render index/index.volt html ?

My html had a reference to an image that did no exist. I also had my EventsManager listening for dispatch:beforeException.
When I accessed /login, the page routed properly and rendered /view/login/index.volt.

Phalcon then tried to load the missing image, triggered an exception, which was faithfully caught.
Unfornately, I didn't yet setup up my ErrorController! Phalcon couldn't find the controller it needed and fell back to my IndexController controller, displaying the messages I saw.

LoginController was not rendering two views: LoginController was rendering correctly and the missing image was triggering IndexController.