7.3.1 Formulare erstellen
Der Originaltext dieses Abschnitts hat sich seit der letzen Übersetzung geändert. Bitte hilf dabei die Unterschiede zu lösen. Du kannst:
Die erste Methode die du brauchen wirst ist create(). Diese Methode gibt einen öffnenden Form Tag aus.
<?php echo $form->create(string $model = null, array $options = array()); ?>
<?phpecho $form->create(string $model = null, array $options = array());?>
Alle Parameter sind optional. Wenn create() ohne Parameter aufgerufen wird, wird angenommen, dass du ein Formular erstellst, das an die add() Action des momentanen Controllers mithilfe von Post gesendet werden soll. Das Form Element wird auch als DOM id, benannt nach der Controller Action in CamelCase, zurückgegeben. Wenn ich create() innerhalb eines Views des UsersController aufrufe, dann würde die Ausgabe etwa so aussehen:
<form id="UserAddForm" method="post" action="/users/add" />
<form id="UserAddForm" method="post" action="/users/add" />
Die create() Methode erlaubt noch viel mehr Anpassung über ihre Parameter. Zuerst kannst du den Namen des Models angeben. Dieses Model wird dann für alle Felder des Formulars angenommen und die DOM id des Form Tags wird geändert.
<?php echo $form->create('Recipe'); ?>
//Ausgabe:
<form id="RecipeAddForm" method="post" action="/recipes/add" />
<?php echo $form->create('Recipe'); ?>//Ausgabe:<form id="RecipeAddForm" method="post" action="/recipes/add" />
Im $options Feld findet das Meiste der Konfiguration statt. Dieses spezielle Feld kann eine Anzahl von verschiedenen Schlüssel-Wert Paaren (key-value pairs) enthalten, die die Erstellung des Formulars beeinflussen.
7.3.1.1 $options[‘type’]
Dieser Schlüssel wird benutzt um die Art des Formulars zu bestimmen, das erstellt werden soll. Gültige Werte sind 'post', 'get', 'file', 'put' und 'delete'.
Das Übergeben von 'post' oder 'get' verändert die Methode zur Übertragung der Formulardaten entsprechend.
<?php echo $form->create('User', array('type' => 'get')); ?>
//Ausgabe:
<form id="UserAddForm" method="get" action="/users/add" />
<?php echo $form->create('User', array('type' => 'get')); ?>//Ausgabe:<form id="UserAddForm" method="get" action="/users/add" />
Durch den Wert 'file' wird die Formularübertragung auf 'post' geändert und eine Eigenschaft "enctype" mit Wert "multipart/form-data angehängt. Dieses wird benutzt wenn irgendwelche file Elemente im Formular sind. Ohne dem "enctype" Attribut wird der Datei Upload nicht funktionieren.
<?php echo $form->create('User', array('type' => 'file')); ?>
//Ausgabe:
<form id="UserAddForm" enctype="multipart/form-data" method="post" action="/users/add" />
<?php echo $form->create('User', array('type' => 'file')); ?>//Ausgabe:<form id="UserAddForm" enctype="multipart/form-data" method="post" action="/users/add" />
Wenn 'put' oder 'delete' verwendet wird, ist das Formular gleich wie ein normales 'post' Formular, mit dem Unterschied, dass wenn es abgeschickt wird, die HTTP Request Methode mit 'PUT' oder 'DELETE' überschrieben wird. Das erlaubt CakePHP eine einwandfreie REST Unterstützung für Web-Browser zu emulieren.
7.3.1.2 $options[‘action’]
Der Schlüssel action erlaubt dir eine spezielle action in deinem aktuellen Controller anzugeben. Wenn du z.B. das Formular für die action login() des aktuellen Controllers erstellen möchtest, so würde der form-Aufruf wie folgt aussehen:
<?php echo $form->create('User', array('action' => 'login')); ?>
//Output:
<form id="UserLoginForm" method="post" action="/users/login">
</form>
<?php echo $form->create('User', array('action' => 'login')); ?>//Output:<form id="UserLoginForm" method="post" action="/users/login"></form>
7.3.1.3 $options[‘url’]
Wenn die gewünschte Zieladresse (action) nicht der aktuelle Controller ist, kann ein Ziel-Url über den URL Schlüssel des $option Array angegeben werden. Hier ist ein relativer Verweis innerhalb der CakePhp Installation, oder eine externe URL möglich.
<?php echo $form->create(null, array('url' => '/recipes/add')); ?>
// or
<?php echo $form->create(null, array('url' => array('controller' => 'recipes', 'action' => 'add'))); ?>
//Output:
<form method="post" action="/recipes/add">
<?php echo $form->create(null, array(
'url' => 'http://www.google.com/search',
'type' => 'get'
)); ?>
//Output:
<form method="get" action="http://www.google.com/search">
<?php echo $form->create(null, array('url' => '/recipes/add')); ?>// or<?php echo $form->create(null, array('url' => array('controller' => 'recipes', 'action' => 'add'))); ?>//Output:<form method="post" action="/recipes/add"><?php echo $form->create(null, array('url' => 'http://www.google.com/search','type' => 'get')); ?>//Output:<form method="get" action="http://www.google.com/search">
Also check HtmlHelper::url method for more examples of different types of urls.
7.3.1.4 $options[‘default’]
Wenn ‘default’ auf den Boolean false gestzt wurde, wird die Submit-Action des Formulars geändert, so dass Klicken auf den Submit-Button das Formular nicht abschickt. Wenn das Formular via AJAX übermittelt werden soll, unterdrückt die false-Einstellung von ‘default’ das Standard-Verhalten des Formulars, so dass die Daten via AJAX abgegriffen und übermittelt werden können.
