Play framework: Porovnání verzí
Smazaný obsah Přidaný obsah
m Kategorie:Software pod licencí Apache; {{Infobox - software}} |
m <source> -> <syntaxhighlight> (phab:T237267) |
||
Řádek 20:
Pro generování základní struktury projektu je možné z konzole spustit příkaz <code>activator new</code> za kterým se uvede název vytvářené aplikace. Následně je možné zvolit jazyk, ve kterém bude aplikace vytvářena. Vybrat je možné mezi Javou a Scalou. V aktuální složce je poté vytvořen adresář se zadaným názvem a základní strukturou aplikace.
<
├──app
│ ├──assets
Řádek 43:
├──target
└──test
</syntaxhighlight>
== Nastavení aplikace ==
Základním konfiguračním souborem aplikace je soubor <code>application.conf.</code> Jedná se o běžný textový soubor, používající formát <code>[[HOCON]]</code> a jeho úpravou je možné měnit nastavení databázového připojení, konfiguraci nástroje Ebean, logování, nebo vlastnosti lokalizace. Základní konfiguraci databáze a ORM nástroje lze provést odkomentováním několika řádků.
<
#Database conf
db.default.driver=org.h2.driver
Řádek 57:
ebean.default="models"
</syntaxhighlight>
Za sestavení celé aplikace je odpovědný nástroj zvaný Scala Build Tool (sbt). Ten se stará o veškeré závislosti, jejich stažení, integraci a sestavení výsledné aplikace.
<
import play.PlayJava
Řádek 78:
"org.mindrot" % "jbcrypt" % "0.3m"
)
</syntaxhighlight>
== Základní příkazy konzole ==
Řádek 89:
Uvnitř modelových objektů je možné použít [[JPA]] anotace. ORM nástroj Ebean, který je součástí frameworku registruje mapované objekty s pomocí anotace <code>@Entity</code>. Aby mohly jednotlivé objekty využívat vlastností nástroje Ebean, měly by dědit ze třídy <code>play.db.ebean.Model</code>.
<
@Entity
public class Delivery extends Model{
Řádek 114:
}
</syntaxhighlight>
== Tvorba řadičů a mapování HTTP požadavků ==
Řádek 121:
Ve frameworku Play jsou to pak objekty dědící od třídy <code>play.mvc.Controller</code>. Každý takový objekt řadiče obsahuje několik statických metod, jejichž úkolem je zpracovat příchozí HTTP požadavek a vrátit instanci třídy <code>play.mvc.Result</code>. Mapování jednotlivých HTTP požadavků je prováděno uvnitř souboru <code>conf/routes</code>. Uvnitř každé definice je HTTP požadavek na konkrétní adresu přiřazen ke konkrétní metodě konkrétního řadiče.
<
#Home page
GET / controllers.ApplicationController.index()
Řádek 128:
GET /product/all controllers.ProductController.showAll()
POST /product/new controllers.ProductController.createNewProduct()
</
=== Reverse routing ===
Řádek 148:
Práce s formulářem obvykle vyžaduje dva základní kroky. Prvním je formulář uživateli zobrazit, druhým potom zajistit jeho odeslání zpět do aplikace, včetně ověření jeho obsahu. Formuláře jsou ve frameworku Play objekty typu <code>play.data.Form</code>. Základem pro každý formulář je vždy některá třída z modelu, jehož data se mají s pomocí formuláře získat. K vytvoření formulářového objektu stačí v odpovídajícím řadiči implementovat metodu, která objekt formuláře pošle společně s dalšími požadovanými daty do dané šablony.
<
public static Result showLoginFormPage(){
return ok(views.html.login.render(form(Customer.class), "Login"));
}
</
<
@helper._
@(loginForm : Form[models.Customer], title : String)
Řádek 174:
</div>
}
</
Hlavička formuláře obsahuje metodu, která se má zavolat po jeho odeslání. Po překladu odpovídá HTML kódu <code><form action="/login" method="POST" id="loginForm"></code>Adresa URL, na kterou se mají data z formuláře posílat je určena podle směrovacího souboru, který by v následujícím případě měl mít následující podobu.
<
#Login
GET /login controllers.Login.login()
POST /login controllers.Login.authenticate()
</syntaxhighlight>
Pro vytvoření formuláře je možné použít jednak klasické HTML elementy, jako je tomu v předchozím příkladu nebo využít formulářové konstruktory, které jsou součástí Play. Stejného výsledku jako v předchozím příkladu lze dosáhnout i touto cestou.
<
@helper._
@(loginForm : Form[models.Customer], title : String)
Řádek 198:
}
}
</
<
public static Result authenticate(){
Form<Customer> bindForm = Form.form(Customer.class).bindFromRequest();
Řádek 216:
return redirect(routes.Application.customerDetail());
}
</
V případě, že jsou data formuláře neúplná, lze na toto uživatele upozornit s použitím souborů <code>cookies</code>. Metoda <code>flash<span class="br0">(</span><span class="st0">"error"</span>, <span class="st0">"Vyplňte prosím, všechna pole formuláře."</span><span class="br0">)</span><span class="sy0">;</span></code><span class="sy0">stanovuje dobu platnosti chybové hlášky na dva HTTP požadavky. Poté je uživatel přesměrován zpět na stránku s formulářem.</span>
|