Objekt-Erstellungs-API
-
Die config_template.inc.php wird vom Setup verarbeitet. Daraus wird dann die config.inc.php erstellt. Wenn du dieses Array in deiner config.inc.php nicht drin hast, solltest du es dir aus dem template kopieren, sonst erkennt i-doit die variablen nicht.
-
Jo jetzt gehts.WUNDERBAR
Muss ich die (hoffentlich nur 2 global/obj) StatusID's noch manuell auf 2/sichtbar setzen oder gibts da auch noch eine Methode für.
Btw. Ich habe i-doit heute nochmal komplett neu auf gesetzt(über den Wizard) und die $g_controller-Variable war wieder nicht in der config_inc.php.
Ich weis ja nicht ob die standardäßig dort drin stehen sollte oder nicht.Aber wenn ja wäre das hiermit eine BugMeldung.
-
So ich hab noch eine Frage zur DB.
Was bedeuten die Felder:
isys_catg_location_list__lft isys_catg_location_list__rgtman kann sich ja etwas denken wie:
Dieses Objekt hat zur Wurzel hin diesen Nachbarn in der Hierarchi.
und zum endgerät hin diesen.Aber welcher wäre dann Links welcher Rechts und auf welche ID bezieht es sich.
Schon mal Danke
-
das mit dem lft und rgt hab ich jetzt auch rausgefunden.
lft und rgt symbolisieren die linke und rechte "klammer" welche ein Obj abgrenzt.
Wenn ein Obj direkt root zugewiesen ist dann steht da zum beispiel
lft:8 rgt:9Ein Container-obj mit Childs schließt alle darunterliegenden Obj mit ein.
z.B. lft:10 rgt:15
die Childs dazwischen haben dann.
lft: rgt:
11 12
13 14. -
Jetzt wieder zu einem Problem:
wenn ich den controller.php?load=handler&…
,von meinem Browser aus, aufrufe funktioniert es.wenn ich das ganze von einem PHP-Script(Http-Request) aus mache,
um die neue Obj-ID auslesen zu können. dann kommt folgender Fehler:\fehler anfang
Fatal error: Argument 1 passed to isys_cmdb_dao::__construct() must not be null, called in /idoit/src/handler/isys_handler_create_obj.class.php on line 39 and defined in /idoit/src/classes/cmdb/dao/isys_cmdb_dao.class.php on line 2237
\fehler endeline 39:
$l_dao = new isys_cmdb_dao($g_comp_database);Das gleiche passiert aber auch wenn ich das ganze über die Console mache mit:
php controller.php -v -m create_objIch habe beim dem Aufruf über den Http-Request auch alle nötigen Session inhalte in diese geschrieben, und selbst wenn ich auch noch ein Cookie mit übergeben hab, geht es nicht.
Wenn $g_comp_database fehlt. Heist das ja das die ganze i-doit Klassenstruktur nicht läuft.
Woran könnte das liegen?
Schon mal Danke
-
Hi,
das mit den locations hast du schonmal gut hinbekommenEs sieht so aus als hättest du dir die g_comp_database nicht aus dem globalscope gezogen. Hast du "global $g_comp_database" vor deiner Anweisung stehen?
Ansonsten vielleicht ein login Problem? Kommt irgend ein output von dem controller auf der console?
-
Du kannst dir fuer den login übrigens auch eine config anlegen, so dass er sich für zB cronjobs oder aus anderen tools heraus automatisch einloggt:
src/handler/config/isys_handler_create_obj.inc.php
/** * i-doit * * @package i-doit * @subpackage General * @author Dennis Stücken <dstuecken@i-doit.de>* @version 0.9 * @copyright Copyright 2004, 2005 - synetics GmbH * @license http://dev.perl.org/perl6/rfc/346.html Artistic License 2.0 */ define("C__HANDLER__CREATE_OBJ", 1); /** * Automated login configuration */ $g_userconf = array( "user" => "admin", "pass" => "admin", "mandator_id" => 1 ); ?></dstuecken@i-doit.de>
-
Die Console schmeisst sich genau den selben Fehler:
PHP Fatal error: Argument 1 passed to isys_cmdb_dao::__construct() must not be null, called in /idoit/src/handler/isys_handler_create_obj.class.php on line 11 and defined in /idoit/src/classes/cmdb/dao/isys_cmdb_dao.class.php on line 2237
09 global $g_comp_database;
10
11 $l_dao = new isys_cmdb_dao($g_comp_database);Die Login Datei hab ich auch schon angelegt diese ändert aber auch nichts.
ich nehme mal an das mit "mandator_id" , die Systendatenbank-ID gemeint ist und nicht die oben definierte "1"
Kann man dem Script über die Konsole auch Parameter mitgeben, trotzdem es zuerst über den Controller läuft.
Sonst wäre das für mich eh unbrauchbar da man ja verscheidene Objekte-Typen anlegen will. -
Die mandator_id ist die ID deines Mandanten, in dem du das Objekt anlegen willst. Die id findest du in der Tabelle isys_mandator (isys_mandator__id) in der System Datenbank.
Da du ein Problem mit der g_comp_database (Mandaten-Datenbank) hast, nehme ich an, dass du keinen Mandanten mit der id 1 hast und er die DB-Komponente deshalb nicht instantiieren kann -
Falls du dir den Lokations algorithmus übrigens noch einmal genauer anschauen möchtest, kannst du das ganze hier nachlesen: http://www.sitepoint.com/article/hierarchical-data-database/2
Wir verwenden den "Modified Preorder Tree Traversal Algorithmus"