+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Problem mit JFile im View

  1. #1
    Neu an Board
    Registriert seit
    11.03.2009
    Beiträge
    13
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Problem mit JFile im View

    Moin!

    Ich baue gerade eine selbst entwickelte 1.5-Komponente auf 1.6 um. Ich bin mir bewusst, dass der Betastatus der 1.6 nur bedingt aussagekräftig über den RC ist und wegen der noch vorhandenen Fehler nicht produktiv eingesetzt werden soll (tu ich auch nicht). Aber ich vermute, mein Problem ist nicht auf den Betastatus (und damit einen Bug) zurückzuführen, von daher hoffe ich trotzdem auf Hilfe. Meine Testumgebung ist die - noch - aktuelle beta8.

    Ich versuche, per JFile::read('components/com_testcomponent/helpers/datei.txt') eine Datei komplett in eine Variable einzulesen. Innerhalb der default.php funktioniert das auch tadellos. Allerdings brauche ich Teile des Inhalts auch in der view.html.php. Wenn ich aber die read-Anweisung - egal wo -, bekomme ich folgende Fehlermeldung:

    Fatal error: Class 'JFile' not found in /www/htdocs/test/Joomla16/components/com_testcomponent/views/func1/view.html.php on line 37
    Die view.html.php sieht so aus:

    Code:
    29 class TestViewFunc1 extends JView
    30 {
    31 
    32 function display( $tpl = null )
    33 {
    34 $mainframe = JFactory::getApplication();
    35 $session 	= &JFactory::getSession();
    36 		
    37 $dings = JFile::read('components/com_testcomponent/helpers/datei.txt');
    [...]weiterer Code[...]
    Fällt Euch dazu was ein? Sitze ich da wider Erwarten doch einem Bug auf oder eher einem Denkfehler?

  2. #2
    Hat hier eine Zweitwohnung Avatar von JoomDesign
    Registriert seit
    19.03.2006
    Ort
    Berlin, Deutschland
    Beiträge
    1.927
    Bedankte sich
    269
    Erhielt 594 Danksagungen
    in 511 Beiträgen

    Standard

    jimport('joomla.filesystem.file');
    vor der Klasse einfügen

  3. #3
    Neu an Board
    Registriert seit
    11.03.2009
    Beiträge
    13
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Exakt das war's. Danke für's Lösen der Hirnblockade!

  4. #4
    Neu an Board
    Registriert seit
    11.03.2009
    Beiträge
    13
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Ich muss nochmal nachhaken bei einem etwas anderen Problem, und dafür ein neues Thema aufzumachen, erscheint mir falsch, weil ich niemanden explizit zur Frickelei an einer Beta anstiften will.

    Ich habe ein Select-Objekt im Joomla-Kontext im View definiert und lasse es dann in der default.php ausgeben. Klappt auch soweit. Das einzige Problem ist, dass eine Zeile leer ausgegeben wird, wenn sie Umlaute (also ÄÖÜäöüß und ihre HTML-Entsprechungen) enthält.

    PHP-Code:
    161 $gender[] = JHTML::_('select.option''',  'Bitte wählen' );
    162 $gender[] = JHTML::_('select.option''MALE',  'Männlich' );
    163 $gender[] = JHTML::_('select.option''FEMALE''Weiblich' );
    164 $objects['gender'] = JHTML::_('select.genericlist'$gender'gender''''value''text'$row->gender); 
    Ich habe schon versucht, das im Core nachzuvollziehen, und in der /libraries/joomla/html/html/select.php kann ich per echo nachweisen, dass die Umlaute zwischen der Zuweisung zum Objekt und der Rückgabe des Objektes verloren geht.

    PHP-Code:
    411 $obj = new JObject;
    412 $obj->$options['option.key'] = $value;
    413 $obj->$options['option.text'] = trim($text) ? $text $value;
    414 echo $obj->$options['option.text']; 
    Zeile 414 gibt mir sowohl "Bitte wählen" als auch "Männlich" korrekt aus. Danach geht's irgendwo verloren. Ist das ein Bug, und hat jemand 'ne Idee, wie ich das umschiffen kann?

  5. #5
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    593
    Bedankte sich
    108
    Erhielt 358 Danksagungen
    in 202 Beiträgen

    Standard

    In Zeiten von UTF-8 braucht es keine UML mehr - Sonderzeichen können direkt benutzt werden.

  6. #6
    Neu an Board
    Registriert seit
    11.03.2009
    Beiträge
    13
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Würde ich tun, wenn's denn funktionierte...

  7. #7
    War schon öfter hier
    Registriert seit
    23.09.2009
    Beiträge
    235
    Bedankte sich
    0
    Erhielt 62 Danksagungen
    in 59 Beiträgen

    Standard

    Die Optionen zusätzlich von JText::_(); übersetzbar machen.
    PHP-Code:
    JText::_('JSELECT_GENDER');
    JText::_('JMALE');
    JText::_('JFEMALE'); 
    Tell 'em what they want to hear. That will keep them coming back for more. I 've got some for everyone.

  8. #8
    Neu an Board
    Registriert seit
    11.03.2009
    Beiträge
    13
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Haut auch nicht hin (zumal ohne Joomfish, das ja wohl ohnehin erst auf die finale Version hin entwickelt wird), daher ja die direkte Ausgabe.

    Update: Die Probleme bestehen mit vielerlei Special Chars (also auch Trademark, OSlash9 etc.), auch in Reinform.
    Geändert von jjpreston (02.09.2010 um 11:06 Uhr)

  9. #9
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    593
    Bedankte sich
    108
    Erhielt 358 Danksagungen
    in 202 Beiträgen

    Standard

    Und speicherst du deine Dateien auch explizit als UTF-8?

  10. #10
    Neu an Board
    Registriert seit
    11.03.2009
    Beiträge
    13
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Verzeih, wenn ich die Intention Deiner letzte Äußerung missverstehe, aber mit der Datenbank hat mein Problem gar nichts zu tun. Auch die normale echo-Ausgabe funktioniert mit Umlauten problemlos. Das Problem tritt ausschließlich bei durch Joomla generierten/definierten Formularfeldern auf, wie eben jenem Select-Feld.

    PHP-Code:
    $gender[] = JHTML::_('select.option''',  'Bitte wählen' );
    $gender[] = JHTML::_('select.option''male',  'Männlich' );
    $gender[] = JHTML::_('select.option''female',  'Weiblich' );
    $objects['gender'] = JHTML::_('select.genericlist'$gender'gender''''value''text'$row->gender); 
    sowie
    PHP-Code:
    $gender[] = JHTML::_('select.option''',  'Bitte wählen' );
    $gender[] = JHTML::_('select.option''male',  'Männlich' );
    $gender[] = JHTML::_('select.option''female',  'Weiblich' );
    $objects['gender'] = JHTML::_('select.genericlist'$gender'gender''''value''text'$row->gender); 
    und
    PHP-Code:
    $gender[] = JHTML::_('select.option''',  'Bitte wählen' );
    $gender[] = JHTML::_('select.option''male',  'Männlich' );
    $gender[] = JHTML::_('select.option''female',  'Weiblich' );
    $objects['gender'] = JHTML::_('select.genericlist'$gender'gender''''value''text'$row->gender); 
    erzeugen die gleiche Ausgabe: Ein Klappfeld mit den Einträgen
    []
    []
    [Weiblich]


    Also ist es nicht mal so, dass die zu "beanstandenden" Zeichenkodierungen einfach rausgefiltert werden, sondern dass der gesamte String wegfällt.

    Hingegen erzeugt
    PHP-Code:
    $gender[] = JHTML::_('select.option''',  'Bitte waehlen' );
    $gender[] = JHTML::_('select.option''male',  'Maennlich' );
    $gender[] = JHTML::_('select.option''female',  'Weiblich' );
    $objects['gender'] = JHTML::_('select.genericlist'$gender'gender''''value''text'$row->gender); 
    die Ausgabe eines Select-Feldes mit den Einträgen
    [Bitte waehlen]
    [Maennlich]
    [Weiblich]


    Die einfache Ausgabe dieser Strings per echo
    PHP-Code:
    echo 'Bitte w&auml;hlen<br />';
    echo 
    'M&auml;nnlich<br />';
    echo 
    'Weiblich'
    (um es mal ganz plakativ zu machen) ergibt, wie erwartet,
    Bitte wählen
    Männlich
    Weiblich


    Das nur als genauere Erklärung, wo das Problem hängt, falls es da noch Missverständnisse gegeben haben sollte.

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein