+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Controller View

  1. #1
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard Controller View

    Ich hab mal wieder ein Verständnis Frage habe hier schon paar Themen gefunden.
    problem-mit-submenu-im-backend
    View

    Ich habe eine Komponente mit einem Submenu welches über die Datenbank #__components auch anspreche und den entsprechenden controller Lade.
    HTML-Code:
    <?php
    // Kein direkter Zugriff
    defined( '_JEXEC' ) or die( 'Restricted access' );
    
    jimport('joomla.application.component.controller');
    
    //dieser Controller wird beim ersten aufruf ausgeführt und ruft im order views/weiss/view.html.php auf
    class ProductsControllerInhalt extends ProductsController
    {
    	function display()
    	{
    		parent::display();
    	}
    }
    auf den Controller wird auch zugegriffen aber die Standard View auf dem views/products/tmpl/default.php wird geladen aber ich will views/inhalt/tmpl/default.php laden.

    Das bekomme ich auch hin wenn ich in der Datenbank den Eintrag erweitere mit &view=inhalt

    geht das nicht auch anders über den controller ohne das ich in der url den view hab?

  2. #2
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    So hab ich nämlich das Problem, dass wenn ich ein Inhalt ändere immer wieder zum Products View komme und ich will ja die Liste vom Inhalt.

  3. #3
    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

    Zitat Zitat von Niels85 Beitrag anzeigen
    ...wenn ich ein Inhalt ändere immer wieder zum Products View komme...
    Und ein Redirect auf die richtige Seite geht nicht?

  4. #4
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    Das klappt auch aber ist das jetzt ein Fehler
    so sieht der controller zu dem jeweiligen submenu aus
    PHP-Code:
    <?php
    defined
    '_JEXEC' ) or die( 'Restricted access' );

    jimport('joomla.application.component.controller');


    class 
    ProductsControllerZutaten extends JController
    {
        function 
    display()
        {
            
    JRequest::setVar'view''zutaten' );
            
    parent::display();
        }
    }

  5. #5
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Generell werden in Joomla! die Views direkt angesprochen und nicht per Controller geladen.

    siehe auch diesen Thread (letzte 3 Beiträge). Eigenständige Controller werden nur gebraucht, wenn ein Task doppelt belegt wird (also z.b. nach dem Absenden von Formularen) ansonsten ruft man den View direkt auf.

  6. #6
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    So seh ich das ja auch.
    So ich habe in der Datenbank #__components in der Spalte admin_menu_link
    das Submenu mit option=com_produkte&controller=inhalt

    Komponenten Name ist Produkte
    im Ordner conrollters befindet sich die Datei inhalt.php
    PHP-Code:
    <?php
    // Kein direkter Zugriff
    defined'_JEXEC' ) or die( 'Restricted access' );

    jimport('joomla.application.component.controller');

    class 
    ProdukteControllerInhalt extends JController
    {
        function 
    display()
        {
            
    parent::display();
        }
    }
    dieser ruft dann ja views/inhalt/view.html.php auf wo sich die View Class ProdukteViewInhalt befindet macht er aber nicht er nimmt die standard view.

    und wenn ich das so löse wie oben beschrieben muss ich in dem controller der einzel ansicht bei den einzelnen Functionen immer den controller noch ranhängen
    PHP-Code:
    $this->setRedirect'index.php?option=com_produkte&controller=inhalt'$msg ); 
    Ich weiß bald nicht mehr weiter.

    die View vom Inhalt sie wie folgt aus
    PHP-Code:
    <?php
    // Kein direkter Zugriff
    defined'_JEXEC' ) or die( 'Restricted access' );

    jimport('joomla.application.component.view');

    //Hier wird die View bestimmt
    class ProdukteViewInhalt extends JView
    {
        public function 
    display($tpl null)
        {

            
    //Die Leiste im Admin wird erstellt mit Titel und rechts die Bottons
            
    JToolBarHelper::title(   JText::_'Inhaltsstoffe' ), 'generic.png' );
            
    JToolBarHelper::publish();
            
    JToolBarHelper::unpublish();
            
    JToolBarHelper::deleteList();
            
    JToolBarHelper::editListX();
            
    JToolBarHelper::addNewX();
            
    // Über /models/inhalt.php werden Daten von der Datenbank geholt mit der function getData();
            
    $items        = & $this->get'Data');
            
            
    $uri    =& JFactory::getURI();
            
    //Sortierung
            /* Call the state object */
            
    $state =& $this->get'state' );
     
            
    /* Get the values from the state object that were inserted in the model's construct function */
            
    $lists['order_Dir'] = $state->get'filter_order_Dir' );
            
    $lists['order']     = $state->get'filter_order' );

            
    //#####Pagination
            
    $pagination =& $this->get('Pagination');
            
    $this->assignRef('items',        $items);
            
    $this->assignRef'lists'$lists );
            
    $this->assignRef('pagination'$pagination);
            
    $this->assignRef('request_url',    $uri->toString());        
            
    //ruf /views/tmpl/default.php auf
            
    parent::display($tpl);
        }
    }
    Geändert von Niels85 (22.08.2010 um 17:20 Uhr)

  7. #7
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    Ich würde auch gerne wissen wie ich die User id abspeichern kann wenn ich ein Eintrag abspeicher und das erstellungsdatum.

    hab die tabel
    var $created = hier soll datum rein
    var $created_by = die User id.

    in der FORM.php wollte ich eigentlich die userid mit einem Hidden inputfeld übergeben
    PHP-Code:
    <?php $user     =& JFactory::getUser();?>
    <input type="hidden" name="created_by" id="created_by" value="<?php echo $user->id?>" />
    das Funktioniert auch aber wie mach ich das mit dem datum. now() geht ja schlecht.

    Gibt es das schon was von Joomla?

  8. #8
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Zitat Zitat von Niels85 Beitrag anzeigen
    So seh ich das ja auch.
    So ich habe in der Datenbank #__components in der Spalte admin_menu_link
    das Submenu mit option=com_produkte&controller=inhalt
    Und genau das ist nicht wirklich der Sinn der Sache. Dein Link sollte eher so aussehen:

    option=com_produkte&view=inhalt

    Zitat Zitat von Niels85 Beitrag anzeigen
    PHP-Code:
    class ProdukteControllerInhalt extends JController
    {
        function 
    display()
        {
            
    parent::display();
        }

    Genau das ist der Punkt. Diese Methode ist identisch mit der Methode aus dem default Controller. Somit ist dieser zusätzliche Controller völlig unnötig...

    Zitat Zitat von Niels85 Beitrag anzeigen
    dieser ruft dann ja views/inhalt/view.html.php auf wo sich die View Class ProdukteViewInhalt befindet macht er aber nicht er nimmt die standard view.
    Wenn du anstatt controller=inhalt direkt view=inhalt machst, dann ruft er den korrekten View auf ohne irgendwie was kryptisches über den Controller zu fabrizieren.

    Zitat Zitat von Niels85 Beitrag anzeigen
    [...]
    Probiere mal so stark wie möglich auf zusätzliche Controller zu verzichten (besonders bei normalen Ausgaben) und die Views direkt aufzurufen. Das dürfte so einige Probleme lösen. Zusätzliche Controller kommen nur ins Spiel, wenn der default Controller nicht mehr ausreicht (z.b. wenn du verschiedene Speichermethoden benötigst)

  9. Erhielt Danksagungen von:


  10. #9
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    DAs klappt soweit

    jetzt versteht ich auch den anderen kram ist ja dann auch richtig.
    Ist das denn richtig das ich zu jedem bearbeitung view ein controller habe um die Task zu verarbeiten.
    dann muss ich auch wie hier die view mit angeben damit er nicht wieder die standard view hat oder?

    PHP-Code:
    function cancel()
        {
            
    $msg JText::_'Operation Cancelled' );
            
    $this->setRedirect'index.php?option=com_produkte&view=inhalt'$msg );
        } 
    mal ne Frage gibt es ne anleitung damit ich die ordering(reihenfolge) abspeichern kann in der liste?

    http://docs.joomla.org/API15:JHTMLMenu/ordering

    EDIT hab da noch was gefunden ich probiere es später http://www.major-webdesign.de/orderi...ente-verwenden
    Geändert von Niels85 (22.08.2010 um 19:31 Uhr)

+ Antworten

Lesezeichen

Berechtigungen

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