Gibt es einen Weg zu definieren options['inputDefaults']
auf Standortebene als die, bei jedem FormularWay cakephp inputDefaults auf Standortebene
Antwort
TLDR zu definieren:
Fügen Sie die 2 Teile des Codes unten in ihren jeweiligen Stellen, dann ändern Sie das $defaultOptions
Array zu was auch immer Sie wollen - voila. Es ändert keine der Funktionen von FormHelper, außer dass die Form->create
s inputDefaults
Standardwerte hinzugefügt werden.
Erklärung & Code:
Sie die Formhelper verlängern kann (einfacher als es klingt) durch Ihre eigenen zu machen MyFormHelper
:
<?php
//create this file called 'MyFormHelper.php' in your View/Helper folder
App::uses('FormHelper', 'View/Helper');
class MyFormHelper extends FormHelper {
public function create($model = null, $options = array()) {
$defaultOptions = array(
'inputDefaults' => array(
'div' => false,
'label' => false
)
);
if(!empty($options['inputDefaults'])) {
$options = array_merge($defaultOptions['inputDefaults'], $options['inputDefaults']);
} else {
$options = array_merge($defaultOptions, $options);
}
return parent::create($model, $options);
}
}
Dann in Ihrem AppController, gehören das Formular Helfer in die folgende Art und Weise (wenn Sie bereits einen $ Helfer Variable haben, fügen Sie einfach 'Form' => ...
es):
public $helpers = array(
'Form' => array(
'className' => 'MyForm'
)
);
Dies macht es so, wenn Sie $this->Form
aufrufen, ruft es tatsächlich Ihre benutzerdefinierte 'MyFormHelper' - und das einzige, was es tut, ist die inputDefaults
setzen, wenn sie nicht angegeben sind, dann weiter auf die normale Logik in FormHelper Kuchen finden.
Das ist wirklich toll - ich habe das ein bisschen geändert, so dass Sie Hash :: merge statt Array Merge verwenden, um es auf der Cake API zu halten. Außerdem habe ich meinen "AppFormHelper" genannt - aber das ist nur meine eigene Benennung: Benennen von Helfern ist ziemlich locker. Danke für den Tipp!
Hash-Klasse: http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html
<?php
/**
* @file AppFormHelper.
* This allows you to create defaults for your forms.
*/
App::uses('FormHelper', 'View/Helper');
class AppFormHelper extends FormHelper {
public function create($model = null, $options = array()) {
$default = array(
'inputDefaults' => array(
'div' => false,
'class' => 'form-control',
'autocomplete' => 'off',
),
);
$options = Hash::merge($default, $options);
return parent::create($model, $options);
}
}
Kann ich bitte hinzufügen, dass Daves Code über einen Fehler in ihm hat. Die Linie:
$options = array_merge($defaultOptions['inputDefaults'], $options['inputDefaults']);
Verursacht eine "Notice (8): Array String-Konvertierung [CORE/Kuchen/Ansicht/helper.php, Linie 486]", wenn inputDefaults wird sowohl in der dem erweiterten Formhelper angegeben sowie in der Form selbst.
Dieser Fehler ist nicht in Kirikinthas Version vorhanden.
- 1. Benutzer viele Benutzer Beziehung hat, die CakePHP Way
- 2. The Rails Way - Namespaces
- 3. One-Way-Verschlüsselung Primärschlüssel
- 4. WPF: One-way IValueConverter
- 5. Angular 2-Way Bindung
- 6. CakePHP Installation auf Bluehost
- 7. Paginierung auf URL CakePHP
- 8. Ftp übertrage den rsync-way
- 9. One-Way-Verbindung String-Verschlüsselung
- 10. Angular.js submit form old way
- 11. New Grails Install Way Langsam
- 12. Running CakePHP Shells auf Hintergrund
- 13. Installation/Einstellung CakePHP auf Server
- 14. So installieren DebugKit auf CakePHP
- 15. CakePHP Konsole auf Godaddy Hosting
- 16. Cakephp geht auf falschen Weg
- 17. CakePHP/CakePHP 2.4 App
- 18. One-way async/erwarten Anrufe in WCF
- 19. Implementieren abstrakte Basismodellklasse, die Rails Way ™
- 20. Way doppelte Zeile in Sql erfolgen aufrechnen
- 21. EntLib Way "Null" Wert zu binden
- 22. Proc SQL nimmt WAY löschen zu lange
- 23. No Way Konflikt zu lösen Zwischen dlls
- 24. Angular 2 Two Way Bindung mit ngClass
- 25. Way richtige Prädikat für Templat-Typen
- 26. Einen One-Way-Ajax-Anruf auslösen
- 27. Inverse Boolean mit Two Way Databinding
- 28. Pandas Better Way zu trimmen Daten
- 29. Two-Way in einem Aurelia Individuelle Bindungseigenschaften
- 30. Quick Way to Bluk Kopieren Azure Blobs
+1 - immer darüber nachgedacht, aber nie dazu gekommen, zu suchen, wie. – Dave