Phalcon: View Structure for Multiple Roles

Hi. I have a project, where users have multiple roles:

define ('GUEST',0); define ('ADMIN',1); define ('PRO',2);

Depending on the role, I want to pull a different view in some cases. I'm wondering the best way to structure the folder/files for the views.

Should each role have a folder, and I look to see if the view exists/if not go to the next role? Or do I do this with file names ->index_admin.volt, index_pro.volt? What's the best practice for Phalcon here?

edited Jan '20

Hi. I would do that:

index.volt - you may have some things in common?

/partials - folder with included files for every role - pro.volt, admin.volt and etc.

The individual parts will be included in index.volt. according to the conditions

I dоn't know if this is good practice, however :).

My approach would be to have individual files for each role, stored in a directory based on the action. Something like

views/
    report/
        cars/
            admin.volt
            guest.volt
            pro.volt

Then in your controller, you pick() the appropriate view based on the role of the user.

In the past I've put the logic in the view like:

{% if User.role == const('GUEST') %}
    partial('report/cars/guest.volt')
{% else %}
...

But I think that's not appropriate logic for the view as it seems out of scope for what the view should be doing. I think the best place for that logic is in the controller, which has more awareness of the state of the application.