db.xml
db.xml enthält die Datenbank Definition in einem XML Format. Genauer gesagt im ADODB XML Format. Eine vollständige Beschreibung findet man auf dieser Seite:
http://phplens.com/lens/adodb/docs-datadict.htm#xmlschema
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0"?> <schema version="0.3"> <table name="btPhpExecute"> <field name="bID" type="I"> <key /> <unsigned /> </field> <field name="script" type="C" size="255"> </field></table> </schema> |
Wir nennen unsere Tabelle btPhpExecute. Für unseren Block sind lediglich zwei Felder erforderlich:
- bID – Die Referenz zur Block Instanz
- script – Der Name des auszuführenden Scripts
Das praktische an dieser Art von Datenmodell Beschreibung ist, dass man nicht nur Tabellen automatisch anlegen kann, sondern auch aktualisieren. Wollen wir ein einzelnen Feld hinzufügen, so können wir dies tun, gehen im C5 Dashboard auf “Add Functionality” und öffnen unseren Block, dort noch auf “Refresh” klicken und schon haben wir die neue Spalte in unserer Tabelle, ohne den bestehenden Inhalt zu verloren zu haben!
7 Comments
Hi Remo,
vielen Dank für die ausfürliche Beschreibung.
Grüße aus Nürnberg
Super Anleitung.
Genau das was ich brauche um ein paar notwendige Änderungen zu machen.
Danke und Gruß
Peter
Hi!
Danke für die guten Tuts!
Was hier drin nicht steht, ist das die Files im Ordner “php_execute” sein müssen, obwohl ich nicht genau weiss, wo das definiert ist. Hat jmd einen Hinweis?
Gruss
Ja richtig! Das steht nirgends im Tutorial…
Der Ordner definiert sich durch den Namen der Klasse im Controller. Nach “_” kommt ein Grossbuchstabe und anschliessend jeweils “BlockController”
Ordner: super_sache
Klasse: SuperSacheBlockController
Hi!
Du, ich bekomme hier leider folgende Fehlermeldung wenn ich den Block hinzufüge und danach die Änderungen speichern will.
Ich benutze Concrete 5.3.3.1
Kannst du mir da eventuell helfen?
Fatal error: method_exists() [function.method-exists]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "PhpExecuteBlockController" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /www/htdocs/concrete/libraries/database_indexed_search.php on line 135
Hey Fernandos,
der Block funktioniert bei mir problemlos mit 5.3.3.1 aber ich hab eine Unschönheit gefunden. In der ZIP Datei gibt’s keinen Block Ordner.
Das heisst du musst zuerst einen Ordner “php_execute” in blocks erstellen und dort alles Files entpacken..
Gruss Remo
Hi Remo
Your block doesn’t seem to be working in concrete 5.4.2, any idea why?