Hallo,
Ich habe es im Moment im Template über:
Ich muss noch extra Modul für disen Formular erstellen.PHP-Code:
echo $this->replaceInsertTags( '{{insert_module::'.$this->ModulId.'}}' );
Hallo,
Ich habe es im Moment im Template über:
Ich muss noch extra Modul für disen Formular erstellen.PHP-Code:
echo $this->replaceInsertTags( '{{insert_module::'.$this->ModulId.'}}' );
Du könntest die Form Klasse aufrufen...
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Hi!
währe das dann so:
und die compile Funktion mit der meiner ID defenieren? Z.B:PHP-Code:
$this->import('Form');
kann das aus dem template machen? ist es nicht komplizierter und langsamer als mit dem Inserttag?PHP-Code:
$this->import('Form');
protected function compile()
{
// Get all form fields
$objFields = $this->Database->prepare("SELECT * FROM tl_form_field WHERE pid=? AND invisible!=1 ORDER BY sorting")
->execute($this->Meine_id);
//+ alles andere in dieser Funktion aus der Form.php
}
Ich hatte auch gerne so viele Code nicht im template stehen, aber mein Modul hat ja auch schon eine compile();
oder kann ich irgendwie bei Aufruf von Form Klasse im die richtige id übergeben?
wie sith es dann aus?
Ich denke wenn du nichts anpassen musst, kannst du auch einfach den InsertTag benutzen. Die Klasse erlaubt dir natürlich mehr Kontrolle. Wenn ich mich richtig erinnere musst du lediglich die Klasse mit den entsprechenden Formulardaten instantiieren, bzw. deinen eigenen (die des Moduls/Inhaltselement).
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
kannst du es nähe erklaren mit einem beispiel code, ungetestet natürlich?
Du musst dann allerdings im Modul auch die Einstellung eines Formulars (so wie im Original) zulassen, oder die entsprechenden Daten simulieren.PHP-Code:
new Form($this->arrData);
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
ich weiss, dass du mir nicht kommpletten code schreiben kannst, aber jtzt weiß gar nciht ob ich es importiren muss, wo das ganze hin soll in meine Compile oder doch im template. was beinhaltet dieses arrData;
Kannst du vilelleicht sagen wo ich das im Core nachgucken kann? welche dateien. in der Form.php ist nicht ersichtlich wie du zu dieser Zeile kommst:
PHP-Code:
new Form($this->arrData);
Die Form-Klasse ist ein sogenannter Hybrid, der sowohl als Frontend-Modul als auch als Inhaltselement funktionieren kann. Am besten schaust du dir an was passiert, wenn du ein entsprechendes Inhaltselement auf einer Seite einbindest. Dann solltest du verstehen welche Daten dem Objekt übergeben werden - vorausgesetzt du verstehst genug PHP
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Hallo,
ich bekomme immer diesen Fehler, ich kann auch irgenwie die construct metode für Formular nicht aufrufen; egal wo ich sie einfüge habe ich folgenden Fehler:
Mein modul hat die Construct metode nicht gebraucht, wenn ich da aber die einfüge und $this->import('Form') oder new Form() aufrufe,HTML-Code:Recoverable error: Argument 1 passed to Hybrid::__construct() must be an instance of Database_Result, none given, called in
dann wird es trotzdem diese Fehlermeldung ausgegeben.
mein Modul erwetert Module. (extends Module).
Ist es möglich in eigenem Modul ein Formular aus dem Formulargenerator ausgeben?
wie schicke ihn an das template weiter?
ich will diesen code nicht im Template haben.
Ich finde die Stelle nicht wo im Core die Formklasse aufgerufen wird.
Ich hatte schon versucht das zu erklären. Du musst der Klasse einen Datensatz übergeben.
PHP-Code:
$objModule = $this->Database->execute("SELECT * FROM tl_module WHERE id={$this->id}");
$objForm = new Form($objModule);
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Jetzt ist im $objForm ,die ganzen Formular einstellungen wie
aber nicht das Formular.PHP-Code:
[id] => 2
[tstamp] => 1279265001
[title] => Register
[jumpTo] => 0
[sendViaEmail] =>
[recipient] =>
[subject] =>
[format] => raw
[skipEmpty] =>
[storeValues] =>
[targetTable] =>
[method] => POST
[attributes] => a:2:{i:0;s:0:"";i:1;s:0:"";}
[formID] => Reg
[tableless] =>
[allowTags] =>
[sendFormattedMail] => 1
[formattedMailRecipient] =>
+++
es funktioniert auch wundersamer weise, weil ich im modul das Feld für auswahl von formularen habe, das Arraa ändert sich aus entsprechend welchen Formular man genommen hat.
Wieso hat er der die DB-Abfrage mit meinem Modul gebraucht? (Form klasse)
Und was ist eigenlich hier passiert?
ist jetzt Das Formular angebunden oder fehlt noch was?
Wie kann ich ihn an das Template übergeben?
Die DB-Abfrage auf dein Modul brauchst du, weil dem Form-Objekt eine DB-Abfrage übergeben werden muss.
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
@Andreas
Hi, ich wurde gerne verstehen was ist hier passiert und was ist als nächstes zu tun.
Woher weißt du genau diese Abfrage gebraucht wird, ich dachte es wird id des formulars gebraucht.
kanst du mir vielleicht ein paar Dateine nennen wo ich es nachvolzihen kann?
hier komme ich nicht wirklich weiter. http://api.contao.org/Controller/Form.html
Ich weis dass diese Daten benötigt werden, weil ich das System kenne. Wie kommst du auf die Idee dass eine ID benötigt wird? Vermutlich nur durch überlegen, nicht durch nachvollziehen, oder?
Um das ganze zu verstehen, musst du den Quellcode lesen (und verstehen). Die API ist dafür nicht wirklich zu gebrauchen...
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Ja, hast du recht, ich finde leider nicht die richtige Dateien um es nachvollziehen.
Kannst mir sagen was habe ich jetzt erreicht und was brauche ich um diesen Formular im Template darstellen?
Oder mir wurde helfen:
hier wird es gemacht Z.B.: Article.php -> Form.php-> Hybrid.php template oder ich weiß es leider nicht. Ich wurde es gern verstehen und auch das Ganze System ein wenig kennen lernen.
Schau dir doch mal die Form.php und deren Parent-Klassen an.
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Form.php hat die gleichen Function wie meine Erweiterung, complile, generate. in der compile wird die ID fom Formular gebracht, wenn ich es richtig verstehe.
deswegen habe ich nicht verstanden was die Zeile, new Form(abfrage mit meinem Modul) macht - zu welcher datei das ganze geht(wo wird es aufgerufen) in der Form.php finde ich es nicht.
Die parent klasse ist Hybrid.php? oder gibt es noch mehr?
Vielen Dank Andreas!!!
Hat endlich geklappt, ich habe es bei generateFronentmodule abgeschaut.
das was gefehlt hat war:
dann wird das Ganze noch in der Compile Funktion an den Template übergeben.PHP-Code:
$strBuffer = $objForm->generate();
Wäre aber schön wenn jemand erklären wurde wie das ganze funktioniert.
Ich denke das wird vielen Helfen die Abläufe in Contao zu verstehen.
ich fasse zusammen:
PHP-Code:
public function myForm ()
{
$objModule = $this->Database->execute("SELECT * FROM tl_module WHERE id={$this->id}");
$objForm = new Form($objModule);
$strBuffer = $objForm->generate();
return $strBuffer;
}
protected function compile()
{
// + eigener modul code
$Mform=$this->myForm ();
$this->Template->mForm =$Mform;
}
Hi,
in diesem Code generiere ich ein Formular, was ich noch brauche ist die Senderadresse zu verändern z.B.(PHP-Code:
$strBuffer = $objForm->generate();
).PHP-Code:
['formattedMailRecipient']
kann ich das irgendwie hier machen oder muss ich über ein hook gehen?
Sieh mein Code oben.
Danke euch!
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen