Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How main.scala.html get called in Play Framework

I am trying to understand the architecture of Play Framework (internally how it works). In other framework like struts we can create index.html page and place in web folder with entry in web.xml file.

In Play the start point is main.scala.html page and all other pages inherited from it by placing all the content wrapped in

  @main(title =""){
  }

like index.scala.html page. But I couldn't find the place where main.scala.html page is registered to Play framework (no entry in routes file or other place?) or may be I am missing some points here.

So far from the play docs I understood that every scala.html page is basically a method call which sounds right to me.

So my goal is basically create other pages like main.scala.html page which will act as container for other sub pages and arrange my code in more modular way

Sorry if I am asking a dumb question.

Thanks in Advance

like image 329
vikashait Avatar asked Mar 20 '23 21:03

vikashait


1 Answers

According to the Play docs main.scala.html is a layout - just common view which allows to inject HTML from other views and references to it by (content: Html) . main layout just wraps code that index view injected to it. (with optional arguments)

The opposite situation is usage of include or tag so just pointing the place where another view should be placed in the current view (also with optional arguments).

You don't need use them at all - Play doesn't enforce you to do that, you can use separate view (without layout) for each action.

On the other hand if some number of views should share same set of JS and/or CSS then layout(s) are native choice to do that job.

For an example instead of using main.scala.layout you can create ie. frontend.scala.html, backend.scala.html, guest.scala.html so your FE views will use @frontend(){ code...}, BE @backend(){ code... } etc.

You are unlimited in number of layouts/views/tags and other includes ;) All belongs to you. That's Play!

like image 84
biesior Avatar answered Apr 02 '23 17:04

biesior