Willkommen im neuen Forum von concrete5.de.
Die Anmeldung ist ab dem 15.10.2020 nur noch mit E-Mail Adresse und Passwort möglich. Eine Anmeldung mit Benutzername ist nicht mehr möglich.
Diese Nachricht löschen.
Anhang entfernen?
Zurück zur Themenliste
D
DannyUlm 12.01.2015 22:43
Version 5.7.x Paket erstellen Gelöst
Hallo zusammen,
hat schon jemand Erfahrungen mit der Entwicklung von Paketen in der aktuellen Version 5.7 gesammelt?
Ich nutze die version 5.6 schon länger und habe bisher Themes als Pakete erstellt.
Jetzt möchte ich etwas ausgefalleneres machen und stehe vor dem Problem, dass ich bei der Installation des Pakets in neue, eigene Tabellen verschiedene Standard-Datensätze einfügen muss.
Hat mir jemand einen Tip, wie ich das beim durchführen der Installation des Pakets am besten lösen kann?
Vorab danke für eure Hilfe.
Gruß
Danny
hat schon jemand Erfahrungen mit der Entwicklung von Paketen in der aktuellen Version 5.7 gesammelt?
Ich nutze die version 5.6 schon länger und habe bisher Themes als Pakete erstellt.
Jetzt möchte ich etwas ausgefalleneres machen und stehe vor dem Problem, dass ich bei der Installation des Pakets in neue, eigene Tabellen verschiedene Standard-Datensätze einfügen muss.
Hat mir jemand einen Tip, wie ich das beim durchführen der Installation des Pakets am besten lösen kann?
Vorab danke für eure Hilfe.
Gruß
Danny
D
DannyUlm 16.01.2015 17:51
Danke für eine Rückmeldung. Klar gebe ich gerne mehr Details:
Das Paket (Add-On) besteht nur aus wenigen Dingen, um mich in die Thematik einzuarbeiten.
Das Paket enthält eine Controller.php, in der wie üblich die Eigenschaften und Funktionen für die Installation beinhaltet sind.
Zudem habe ich eine db.xml erstellt, in der eine eigene Tabelle (Name "Versuch") während der Installation über den Controller angelegt wird.
Die Tabelle hat die Felder "bID" und "Werte".
Ich würde jetzt gerne im Controller in der Funktion install gerne die Tabelle "Versuch" gleich mit mehreren neuen Datensätzen füllen.
Variante1:
Versucht habe ich es einmal in der db.xml mit den Nodes "Query".
Variante 2:
Desweiteren habe ich versucht im Controller am Ende der install-Funktion manuell via Sql die Daten in die neue Tabelle zu schreiben.
In beiden Fällen, läuft die Installation des Pakets erfolgreich und sauber durch, die Tabelle wird auch angelegt, aber sie wird nicht mit Daten befüllt.
Meine Vermutung geht dahin, das Variante 1 nicht greift, da in der Version 5.7.x der Datenlayer getauscht wurde und für <Query> keine Kompatibilität geschaffen wurde.
Warum Variante 2 nicht funktioniert, kann ich mir leider nicht erklären. wenn die Datenbank noch nicht vorhanden ist, dann sollte doch eigentlich ene Fehlermeldung zu sehen sein, oder?
Wenn du noch mehr infos brauchst, gerne kurz anfordern, bin danke für jede Hilfe.
Gruß
Danny
Das Paket (Add-On) besteht nur aus wenigen Dingen, um mich in die Thematik einzuarbeiten.
Das Paket enthält eine Controller.php, in der wie üblich die Eigenschaften und Funktionen für die Installation beinhaltet sind.
Zudem habe ich eine db.xml erstellt, in der eine eigene Tabelle (Name "Versuch") während der Installation über den Controller angelegt wird.
Die Tabelle hat die Felder "bID" und "Werte".
Ich würde jetzt gerne im Controller in der Funktion install gerne die Tabelle "Versuch" gleich mit mehreren neuen Datensätzen füllen.
Variante1:
Versucht habe ich es einmal in der db.xml mit den Nodes "Query".
Variante 2:
Desweiteren habe ich versucht im Controller am Ende der install-Funktion manuell via Sql die Daten in die neue Tabelle zu schreiben.
In beiden Fällen, läuft die Installation des Pakets erfolgreich und sauber durch, die Tabelle wird auch angelegt, aber sie wird nicht mit Daten befüllt.
Meine Vermutung geht dahin, das Variante 1 nicht greift, da in der Version 5.7.x der Datenlayer getauscht wurde und für <Query> keine Kompatibilität geschaffen wurde.
Warum Variante 2 nicht funktioniert, kann ich mir leider nicht erklären. wenn die Datenbank noch nicht vorhanden ist, dann sollte doch eigentlich ene Fehlermeldung zu sehen sein, oder?
Wenn du noch mehr infos brauchst, gerne kurz anfordern, bin danke für jede Hilfe.
Gruß
Danny
D
DannyUlm 19.01.2015 18:24
Gerne doch:
[php]
<?php
namespace Concrete\Package\Spielwiese;
use SinglePage;
use Database;
class Controller extends \Concrete\Core\Package\Package {
protected $pkgHandle = 'spielwiese';
protected $appVersionRequired = '5.7.3';
protected $pkgVersion = '1.0';
public function getPackageName {
return t('Spielwiese');
}
public function getPackageDescription {
return t('Test-Paket zum Einarbeiten in die concrete5 Programmierung');
}
public function install() {
$pkg = parent::install();
$this->fillDB();
}
public function uninstall() {
parent::uninstall();
$db = Database::getActiveConnection();
$db->Execute('DROP TABLE IF EXISTS sw_versuch');
}
private function fillDB() {
$db = Loader::db();
$sql = 'INSERT INTO sw_versuch (bID, Wert) VALUES (?, ?)';
$db->Execute($sql, array('1', 'Der erste Wert'));
$db->Execute($sql, array('2', 'Der zweite Wert'));
$db->Execute($sql, array('3', 'Der dritte Wert'));
$db->Execute($sql, array('4', 'Der vierte Wert'));
}
}
?>
[/php]
[php]
<?php
namespace Concrete\Package\Spielwiese;
use SinglePage;
use Database;
class Controller extends \Concrete\Core\Package\Package {
protected $pkgHandle = 'spielwiese';
protected $appVersionRequired = '5.7.3';
protected $pkgVersion = '1.0';
public function getPackageName {
return t('Spielwiese');
}
public function getPackageDescription {
return t('Test-Paket zum Einarbeiten in die concrete5 Programmierung');
}
public function install() {
$pkg = parent::install();
$this->fillDB();
}
public function uninstall() {
parent::uninstall();
$db = Database::getActiveConnection();
$db->Execute('DROP TABLE IF EXISTS sw_versuch');
}
private function fillDB() {
$db = Loader::db();
$sql = 'INSERT INTO sw_versuch (bID, Wert) VALUES (?, ?)';
$db->Execute($sql, array('1', 'Der erste Wert'));
$db->Execute($sql, array('2', 'Der zweite Wert'));
$db->Execute($sql, array('3', 'Der dritte Wert'));
$db->Execute($sql, array('4', 'Der vierte Wert'));
}
}
?>
[/php]
Nachricht hinzufügen
Sie müssen sich anmelden , um diese Konversation zu posten.