Klassen und extends Klassen einbinden

etron770

Member
Hallo Till,
wenn ich das richtig sehe so kann man zusätzliche Klassen so einbinden dass die Datei mit dem gleichen Namen + .inc.php in dem Verzeichnis admin/lib/classes liegt, sie wird dann automatisch zur Laufzeit eingebunden.
Wo sollte einen Datei angelegt werden wenn ich eine Klasse aus dem Ordner admin/web/sites erweitern will und wie muss der Dateiname lauten, oder muss ich zwangsweise die php datei der Klasse ändern?

Grüße Knut
 

Till

Administrator
wenn ich das richtig sehe so kann man zusätzliche Klassen so einbinden dass die Datei mit dem gleichen Namen + .inc.php in dem Verzeichnis admin/lib/classes liegt, sie wird dann automatisch zur Laufzeit eingebunden.

Ja.

Wo sollte einen Datei angelegt werden wenn ich eine Klasse aus dem Ordner admin/web/sites erweitern will und wie muss der Dateiname lauten, oder muss ich zwangsweise die php datei der Klasse ändern?

In dem Verzeichnis gibt es keine erweiterbaren Klassen da dort die dateien liegen auf die Du sozusagen als Endpunk per http zugreifst und keine Libraries. Wenn Du Funktionen in solch eine Datei ändern willst dann musst Du die Datei selbst ändern.
 

etron770

Member
Hallo Till,
danke für die Antwort,
noch eine Frage,
wie geht es wenn ich nun in einer selbst geschriebenen Klasse
tpl.inc.php -> getVar und setVar benutzen möchte?
$app->tpl->getVar(...) ist dort ja nicht verfügbar, zumindestens wenn die klassen aus einer tform.php als datasource aufgerufen werden.

Grüße Knut
 

Till

Administrator
Wenn Du in Deiner Funktion ein:

global $app;

hast, dann ist $app->tpl->getVar(...) dort verfügbar. Aus einer datasource sollte man das aber nicht aufrufen, datasources sind Datenquellen für Formulare, die sollten das formular nicht per variable ändern.
 

etron770

Member
Hallo Till,

global $app; hab ich dort denn andere Dinge kann ich aufrufen wie z.B global $app->tform . aber z.B die Strings der languag files in den "private $_vars". und die funktionen getvar und setvar sind zwar vorhanden können aber nicht auf die benötigten language files zugreifen.
datasources sind Datenquellen für Formulare, die sollten das formular nicht per variable ändern.
ich benötige dort einen übersetzbaren Text, der je nach Inhalt eines Datenbankfeldes verschieden ist, also eigentlich schon einen Datenquelle, die aber je nach Inhalt, mit übersetzbarem Text überschrieben wird. z.B aus 0/1 yes/no oder ja/nein usw.
 
Zuletzt bearbeitet:

Till

Administrator
Nimm zum übersetzen die globale language Funktion in app:

$app->lng();

wenn Dein string nicht im Modul gesetzt ist, kannst Du auch De´die form language Datei laden mit:

$app->load_language_file(....)

bevor Du $app->lng verwendest.
 

etron770

Member
die $app-> lng() greift ja entweder auf die lib/lang files oder auf die $_SESSION['s']['module']['name'] zu. Wenn ich jetzt eine module aus sites brauche, kann hatte ich versucht die $_SESSION['s']['module']['name'] temporär auf z.B.: sites/ftp_user_edit zu setzten. Da hat aber auch nicht geklappt da ja lng() dann nur auf z.B de.lng oder en.lng zugreift.

Ich habe es jetzt so gelöst das ich mir in der neuen klasse einen eigene lng() geschrieben habe, bei der ich all language files laden kann
 

Till

Administrator
Benutz doch einfach ie load funktion wie ich es oben beschrieben habe. Damit kannst du jede beliebige language datei laden.
 

etron770

Member
Hab ich ja aber die lng() hat nicht darauf zugegriffen,
also habe ich sie in der neuen klasse selber definiert , sodass ich das wordbook angeben kann. Eventuell habe ich etwas falsch verstanden aber mein Problem ist erst einmal gelöst.

Danke
 

Till

Administrator
Die $app->lng Funktion verwendet das Array $this->_wb[] um einen Text zu übersetzen und mit der Funktion $app->load_language_file() kannst Du jede beliebige Language datei zusätzlich in dieses Array laden.
 

etron770

Member
Irgendwo habe ich einen Denkfehler: Dass gibt mir limit_shell_user_txt aus anstatt den übersetzten text
PHP:
class ownclass {
function own_function($field, $field_value) {
        global $app,$conf;    
        $app->load_language_file (ISPC_ROOT_PATH. '/web/sites/lib/lang/' . $conf ["language"] . '_shell_user.lng' );
        echo $app->lng ( 'limit_shell_user_txt');
  }      
}
der Pfad der zusammengebaut wird, ist /var/..../admin/web/sites/lib/lang/de_shell_user.lng und ein cat /var/..../admin/web/sites/lib/lang/de_shell_user.lng zeigt mir auch die Datei an
 

florian030

Well-Known Member
ich würde das so machen:

Code:
function get_error($errmsg) {
    global $app;
    if(isset($app->tform->wordbook[$errmsg])) {
        return $app->tform->wordbook[$errmsg]."<br>\r\n";
    } else {
        return $errmsg."<br>\r\n";
    }
}
Und die Funktion dann aufrufen. Z.B. so:

Code:
if (empty($field_value)) return $this->get_error($validator['errmsg']);
 

Werbung

Top