+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Komponentenentwicklung: Frage zum Controller

  1. #1
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard Komponentenentwicklung: Frage zum Controller

    Hallo,

    irgendwie fehlt mir hier im Forum ein Unterforum "Komponentenentwicklung", daher stelle ich mein Problem hier ein und hoffe, dass es nicht komplett untergeht bei den Fragen zu anderen Komponenten.


    Ich entwickele gerade meine erste Joomla!1.5-Komponente und stecke bei einem Problem des Controller im Admin-Bereich fest.
    Ich will im Adminbereich zwei DB-Tabellen bearbeiten: "tags" und "objects".

    Als Vorlage habe ich das Galileo Openbook (http://openbook.galileocomputing.de/joomla15/joomla_42_eine_komponente_programmieren_mg_001.htm ) verwendet, wobei das Beispiel leider viel zu kurz gefasst ist.

    Beginnen wir mit der Einstiegsdatei admin.<meine_komponente>.php, das ich um einige Debugausgaben erweitert habe.
    Code:
    <?php 
    defined('_JEXEC') or die('Restricted access'); 
    require_once (JPATH_COMPONENT.DS.'controller.php'); 
    
    if($controller = JRequest::getVar('act')) {
    	$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
        if (file_exists($path)) {
            require_once $path;
        } else {
            $controller = '';
        }
    }
    
    $use_view = 0;
    
    $classname = '<meineKomponente>Controller'.$controller; 
    $controller = new $classname( );
    $view = $controller->getView(JRequest::getVar('act'),'html');
    $model= $controller->getModel(JRequest::getVar('act'));
    echo  " controller classname=" . get_class($controller) . "<br>";
    echo  " view       classname=" . get_class($view) . "<br>";
    echo  " model      classname=" . get_class($model) . "<br>";
    echo  " task=" . JRequest::getVar('task')."<br>";
    echo  " option=" . JRequest::getVar('option')."<br>";
    echo  " act=" .JRequest::getVar('act')."<br>";
    if ($use_view) {
    	$view->display();
    }
    //$controller->execute( "","html" );
    if (!$use_view)
    	$controller->execute(JRequest::getVar('task')); 
    $controller->redirect(); 
    ?>
    In meiner XML-Manifest Datei wird als Submenu Attribut act="objects" bzw. act="tags" definiert:
    Code:
         
    <menu>meine Komponente</menu> 
         <submenu> 
           <menu act="tags">Tags</menu> 
           <menu act="objects">Objekte</menu> 
         </submenu>
    Daher wird beim Anklicken von "Tags" oder "Objekte" die URI

    Code:
    /administrator/index.php?option=com_<meineKomponente>&act=tags
    aufgerufen.

    Setze ich im ersten Script $use_view auf 0, so wird der Standardweg bestritten (so wie ich es auch vorhabe) und der entsprechende Controller mit execute aufgerufen, wobei der task übergeben wird. Da der task leer ist, sollte das Defaultverhalten "display" aufgerufen werden. Stattdessen kann der Controller wohl intern den View nicht richtig zusammensetzen, es kommt zur Fehlermeldung:

    Code:
     500 - Es ist ein Fehler aufgetreten
    
    View not found [name, type, prefix]: <meineKomponente>s,html,<meineKomponente>sView
    Setze ich $use_view auf 1, so wird der View mit den Parametern JRequest::getVar('act') und 'html' auf dem Controller geholt und dann direkt mit display() aufgerufen. Das funktioniert zwar, aber der View kann dann nicht auf das Modell zugreifen. Hier erscheint zwar keine Fehlermeldung, aber leider auch keine Daten. Der SQL-Befehl im Modell wird nicht ausgeführt, ich habe dort mal künstlich einen Fehler eingebaut.

    Mit $use_view=1 verlasse ich den Standardweg, was dann dazu führt, dass das Modell leider ohne Fehlermeldung gar nicht gefunden wird.

    An was kann das liegen? Ich würde gerne wirklich den Standardweg einhalten.

    Bin für jede Hilfe dankbar.

    Gruß joomlix

  2. #2
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Hallo,
    was ist der Sinn von der Variable $use_view? Es scheint mir nicht standardkonform zu sein.
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  3. #3
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Zitat Zitat von EuerAbi Beitrag anzeigen
    Hallo,
    was ist der Sinn von der Variable $use_view? Es scheint mir nicht standardkonform zu sein.
    Die habe ich nur zum Testen eingebaut. Die ist natürlich nicht standard konform :-)

  4. #4
    Moderator Avatar von time4mambo
    Registriert seit
    11.12.2006
    Ort
    76646 Bruchsal
    Alter
    54
    Beiträge
    14.363
    Bedankte sich
    456
    Erhielt 2.978 Danksagungen
    in 2.796 Beiträgen

    Standard

    Habe den Thread denn mal in das Forum, dass es angeblich nicht gibt, verschoben


    Axel
    Schulungen, Webentwicklung: time4mambo
    (Video-)Tutorials: time4joomla

  5. #5
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Hallo,

    warum benutzst du die Variable act anstatt view?
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  6. #6
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Zitat Zitat von EuerAbi Beitrag anzeigen
    Hallo,

    warum benutzst du die Variable act anstatt view?
    Gute Frage. Weil es so im OpenBook von Galileo steht.

    Was mir auch helfen würde, wäre eine nach Standard implementierte Komponente mit mehr als einem Controller. Leider scheint es aber den "Standard" nicht zu geben. MVC ist ja schön und recht, lässt aber IMO noch viel zu viele Freiheiten und Wildwüchse.

  7. #7
    Wohnt hier Avatar von oldlady
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    4.848
    Bedankte sich
    357
    Erhielt 1.409 Danksagungen
    in 1.290 Beiträgen

    Standard

    Wieso mehr als ein controller? Eine Komponente braucht nur eine Steuerung, sonst gibt es einen Verhau. Wenn du mehre views hast dann schau doch die com_content an, das ist ein umfangreiches Beispiel. EDIT: vor allem auch im admin-Bereich.
    Grüße, Christiane
    Joomla braucht dich!

  8. #8
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Zitat Zitat von oldlady Beitrag anzeigen
    Wieso mehr als ein controller? Eine Komponente braucht nur eine Steuerung, sonst gibt es einen Verhau. Wenn du mehre views hast dann schau doch die com_content an, das ist ein umfangreiches Beispiel. EDIT: vor allem auch im admin-Bereich.
    com_content ist leider auch keine Referenzimplementierung, im Controller oder seinen Helpern sollten tunlichst keine SQL-Anweisungen zu finden sein

    Kann mir jemand einen guten php-Debugger empfehlen?

  9. #9
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Hi,

    schau mal hier vorbei, da steht unter anderem dieses "The JController::display() method will determine the name of the view and layout from the request and load that view and set the layout."
    http://docs.joomla.org/Developing_a_...onent_-_Part_1

    Dort (docs.joomla.org) wird auch beschrieben, wie man eine gute Entwicklungsumgebung mit Eclipse einrichtet. Da ist auch ein Debugger dabei.

    Wenn du eclipse nicht magst, kannst du auch Netbeans probieren, ist in mancher Hinsicher auch besser als Eclipse. Musst in beiden xdebug einrichten was recht einfach geht, dann kasste debuggen.
    Würde dir außerdem vorschlagen, wenn du Englisch kannst, das Ebook http://www.packtpub.com/learning-joo...velopment/book zu kaufen (das ist die neueste Ausgabe).
    Die 20 Euro sind es echt wert, dort wird auch stets wert auf Implementierung nach MVC gelegt.
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  10. Erhielt Danksagungen von:


  11. #10
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Zitat Zitat von EuerAbi Beitrag anzeigen
    Hi,

    schau mal hier vorbei, da steht unter anderem dieses "The JController::display() method will determine the name of the view and layout from the request and load that view and set the layout."
    http://docs.joomla.org/Developing_a_...onent_-_Part_1

    Dort (docs.joomla.org) wird auch beschrieben, wie man eine gute Entwicklungsumgebung mit Eclipse einrichtet. Da ist auch ein Debugger dabei.

    Wenn du eclipse nicht magst, kannst du auch Netbeans probieren, ist in mancher Hinsicher auch besser als Eclipse. Musst in beiden xdebug einrichten was recht einfach geht, dann kasste debuggen.
    Würde dir außerdem vorschlagen, wenn du Englisch kannst, das Ebook http://www.packtpub.com/learning-joo...velopment/book zu kaufen (das ist die neueste Ausgabe).
    Die 20 Euro sind es echt wert, dort wird auch stets wert auf Implementierung nach MVC gelegt.
    Danke für die Tipps.
    Was ich durch googlen gelernt habe, ist das bei PHP-Debuggern gerne einfach eine Bibliothek dazugebunden wird, die dann Debug-Ausgaben macht, z.B. firePHP. Ich hätte gerne einen richtigen Debugger, also mit der Möglichkeit Breakpoints zu setzen ohne den Code modifizieren zu müssen.

    Leistet das Eclipse mit XDebug?

+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte

Lesezeichen

Berechtigungen

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