Play Framework
sbt.batconfpubliccibleParamètres de routage dans un fichier appelé routes
(Connectez la combinaison de type de demande et d'URL envoyée du client au serveur à la méthode du programme)
Lorsque vous accédez à la racine (localhost: 9000 par défaut) avec la méthode GET,
La méthode ʻindex de la classe HomeController dans le dossier ʻapp / controllers est appelée
conf/routes
GET     /                           controllers.HomeController.index
↓
scala:app/views/index.scala.html
@()
@main("Welcome to Play") {
  <h1>Welcome to Play!</h1>
  }
Index de modèle d'appel par méthode d'index Exécutez la fonction principale. (Comme argument
scala:app/views/main.scala.html
 *@
@(title: String)(content: Html)
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png ")">
    </head>
    <body>
        
        @content
      <script src="@routes.Assets.versioned("javascripts/main.js")" type="text/javascript"></script>
    </body>
</html>
Appeler main plus loin par l'index du modèle
Pour incorporer la variable passée dans Html, utilisez @variable name.
Utilisez les informations décrites dans routes
routes
GET     /                           controllers.HomeController.index
GET     /assets/*file               controllers.Assets.versioned(path="/public", file: Asset)
GET     /viewtest                   controllers.ViewTestController.index   #Je veux mettre un lien ici
En html
<a href="@routes.ViewTestController.index">view test</a>
Faire.
routes, ce sont des contrôleurs. ~~`, Mais lorsque vous collez le lien, changez-le en routes. ~~Supposons que vous ayez un modèle comme celui-ci.
HTML:viewtest_index.scala.html
@(title: String="Fichier créé par moi-même")
@viewtest_main("Fichier créé par moi-même"){
    <h1>@(title+"est")</h1>
}
J'essaie de recevoir une variable appelée title, mais comme la valeur initiale est définie, le contrôleur
package controllers
import javax.inject._
import play.api._
import play.api.mvc._
@Singleton //Désignation de "tonne unique". Instruction selon laquelle "un seul objet peut être créé à partir de cette classe"
class ViewTestController @Inject()(cc: ControllerComponents)
  extends AbstractController(cc) { // @Injectez l'instruction à l'intérieur du framework que "cc est fait avec le framework"
  def index() = Action { implicit request: Request[AnyContent] =>
    Ok(views.html.viewtest_index())
  }
}
Cette description est correcte.
pourtant
@(title: String="Fichier créé par moi-même")(rnum: Int = 1)
@viewtest_main("Fichier créé par moi-même"){
    <h1>@(title+"est")</h1>
    <p>La fin est@Grande chance pour rnum! !!</p>
De cette manière, si deux variables sont définies dans le modèle et qu'elles ont des valeurs initiales, dans le contrôleur, ** Vous devez dire que vous ne transmettez aucune valeur à l'une des deux variables et laissez la valeur par défaut **. Dans ce cas,
Ok(views.html.viewtest_index())
 Non (une erreur se produit)
#### **`Ok(views.html.viewtest_index()())`**
De cette façon, vous devez écrire deux () (pour le nombre de variables) dans l'appel de méthode pour transmettre l'intention au programme.
En haut du modèle, dans @ (title: String =" File you created ") (rnum: Int = 1),
Le "views.html.viewtest_index () ()" du contrôleur correspond à cela.
Et même si vous spécifiez la valeur d'une variable à partir du contrôleur sans utiliser la valeur initiale, organisez deux () autant que le nombre de variables.
Ok(views.html.viewtest_index("Titre transmis par le contrôleur")(5))
Aussi, du côté du modèle, comment recevoir des variables
@ (title: String =" Fichier créé par moi-même ", rnum: Int = 1)
Si vous les mettez dans un () séparés par des virgules comme ceci, la manière de passer est également
ʻOk (views.html.viewtest_index ("titre transmis par le contrôleur", 5) `
De cette façon, il devient "écrire comme une fonction normale".
** Doit être utilisé correctement selon la situation ** Comment organiser ()
Parce qu'il a la particularité.
@(title: String= "pour la pratique de la boucle", topics: Array[String])
<ul>
    @for(topic <- topics) {
        <li>@topic</li>
    }
</ul>
L'emplacement de @ est un peu déroutant.
Recommended Posts