ilch Forum » Ilch CMS 2.X » Module und Modifikationen » Eigenes Modul oder eher nicht???

Geschlossen
  1. #1
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Hallo,

    mein Vorhaben soll sein..
    Eine Seite wo regis-User per Formular Liefertermine und weitere Informationen in die Datenbank schreiben können.

    Auf einer anderen Seite sollen diese dann in Tabelle ausgeben werden und für die User bearbeitbar sein.
    Als Admin soll ebenfalls die Möglichkeit bestehen diese zu bearbeiten, löschen etc.
    Zudem soll Admin die Termine dann Fahrzeugen zuordnen können...
    Bietet es sich hier an ein Modul zu erstellen oder eher nicht.
    Habe von Modulerstellung nicht so die Ahnung...möchte mich dennoch daran trauen.


    verwendete ilch Version: 2.1.x

    betroffene Homepage: localhost
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Hallo,

    bitte um kurze Hilfestellung.
    Habe mich jetzt an die Modulerstellung getraut und komme nicht weiter.

    Die Config.php des Moduls funktioniert, ebenso die Install/Deinstallation des Moduls.
    Tabellen in der Datenbank werden sauber angelegt....

    Jetzt hänge ich aber an der Ausgabe fest.
    Verstehe den Ablauf des MVC nicht so ganz...dann noch Mapper etc...
    Werde nicht so ganz schlau aus der Doku und beim mehrmaligem versuchen das FAQ Modul zu ändern bekomme ich ständig fehler.

    Könnte mir das einer kurz erläutern ? Wie soll ich genau vorgehen?
    Möchte einfach nur eine Ausgabe des Datensatzes aus der Datenbank...
    mfg


    Zuletzt modifiziert von RTX2070 am 02.10.2019 - 20:14:30
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Slipi ilch.de Design
    Registriert seit
    19.01.2018
    Beiträge
    938
    Beitragswertungen
    117 Beitragspunkte
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.277
    Beitragswertungen
    356 Beitragspunkte
    Hier auch noch die Entwickler-Dokumentation, falls du diese noch nicht gefunden hast:
    redmine.ilch2.de/projects/dev2/wiki#Doku-Entwickler

    Ansonsten schaue dir mal die einfacheren Module an.
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Danke.
    Die Doku habe ich schon mehrmals durch.
    Verstehe allerdings die Verwendung der Mapper nicht so recht.

    Bzw. der gesamte Ablauf des MVC in Ilch verwirrt mich ziemlich.

    Php-Einfach erklärt wie man es machen kann...möchte aber die Möglichkeiten von Ilch selbst nutzen.
    Bspw. der Querybuilder...
    Php und sql sind mir bekannt....OOP eher schlecht als recht..


    Zuletzt modifiziert von RTX2070 am 03.10.2019 - 14:02:43

    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Slipi ilch.de Design
    Registriert seit
    19.01.2018
    Beiträge
    938
    Beitragswertungen
    117 Beitragspunkte
    Ok, nehmen wir das FAQ Modul her.

    Mit diesem Code gibt man die einzelnen FAQ aus zb ID1, also die Frage - Antwort - und. Wählt man frage 2 aus, wird die Frage 2 mit der ID2 ausgegeben.

    public function getFaqById($id) { $faqs = $this->getFaqs(['id' => $id]); return reset($faqs); }


    Mit denn nächsten Code wird eine Frage, Antwort in eine Kategorie gespeichert, sei es NEU oder Update

    public function save(FaqModel $faq) { 
      $fields = [ 
       'cat_id' => $faq->getCatId(), 
       'question' => $faq->getQuestion(), 
       'answer' 
        => $faq->getAnswer()
     ]; 
     
     if ($faq->getId()) { $this->db()
          ->update('faqs') ->values($fields) 
          ->where(['id' => $faq->getId()]) 
          ->execute();
     } else {
     $this->db()->insert('faqs')
      ->values($fields) ->execute(); 
      }
    }


    Mit dem nächsten Code löscht man eine Frage und die dazugehörige Antwort

    public function delete($id) { 
      $this->db()->delete('faqs') 
        ->where(['id' => $id]) ->execute(); 
    }


    Wie schon angesprochen, löscht man eine ID, wird diese nicht ersetzt sondern die nächste Frage bekommt die nächst höhere Nummer.

    Das wären die 3 wichtigsten Codes und damit kannst du arbeiten, wichtig ist das in dem Formular die values übereinstimmen.

    Slipi
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Hallo Slipi,

    danke für deine Antwort.
    Dies bekomme ich alles hin.
    Mein Problem liegt eher beim Zusammenspiel vom Model View Controller sowie Mapper.

    Zudem verstehe ich einige Methoden von
    Ilch noch nicht so richtig bzw. weis nicht ob diese für mich notwendig sind.
    getPage()
    getRequst()
    etc....

    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Slipi ilch.de Design
    Registriert seit
    19.01.2018
    Beiträge
    938
    Beitragswertungen
    117 Beitragspunkte
    Ein kollege von mir hatte damals eine Tut reihe erstellt, seh es dir an und du wirst es MVC besser verstehen

    www.youtube.com/watch?v=NEPfdH3TUoI&list=UUtZoZnL-E01xZibDqIsc8tA&index=2

    PDO CRUD reihe 1-9 wäre für dich wichtig.

    Slipi
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Werde ich mir morgen mal anschauen auch wenn mir dies alles bekannt ist.
    Doppelt hält vielleicht besser....

    Denke ich habe einfach nur einen Fehler im Script....
    vielleicht was verdreht vergessen etc...

    Werde morgen mal Quellcode vorstellen...

    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Da bin ich wieder ...

    Stehe gerade vor einem kleinem Problem.

    Versuche wieder das FAQ Modul zu ändern um dann auch mal ein eigenes Modul zu erstellen.


    Bekomme allerdings immer folgenden Fatal error angezeigt.

    Fatal error: Class 'Ilch\Mapper' not found in C:\xampp\htdocs\gehlsen\application\modules\tourenverwaltung\mappers\termine.php on line 13



    Habe bei extends aber gar nichts geändert...
    Hier mal der Mapper.
    <?php
    /**
     * @copyright Ilch 2.0
     * @package ilch
     */
    
     /***** MAPPERS *****/
     
    namespace Modules\Tourenverwaltung\Mappers;
    
    use Modules\Tourenverwaltung\Models\termine as TerminModel;
    
    class termine extends \Ilch\Mapper
    {
        
    	
        public function getTermine($where = [])
        {
    		$TerminArray = $this->db()->select('*')
                ->from('termine')
                ->where($where)
                ->execute()
                ->fetchRows();
    
            if (empty($TerminArray)) {
                return [];
            }
    
            $Termine = [];
            foreach ($TerminArray as $TerminRow) {
                $TerminModel = new TerminModel();
                $TerminModel->setId($TerminRow['id']);
                $TerminModel->setName($TerminRow['name']);
                
                
    
                $Termine[] = $TerminModel;
            }
    
            return $Termine;
            
        }
    
        
        public function getTermineById($id)
        {
    		$Termine = $this->getTermine(['id' => $id]);
            return reset($Termine);
            
        }
    
        
    }

    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Tweety060286 Mitglied
    Registriert seit
    12.02.2018
    Beiträge
    412
    Beitragswertungen
    32 Beitragspunkte
    ZitatZitat geschrieben von RTX2070
    Da bin ich wieder ...

    Stehe gerade vor einem kleinem Problem.

    Versuche wieder das FAQ Modul zu ändern um dann auch mal ein eigenes Modul zu erstellen.


    Bekomme allerdings immer folgenden Fatal error angezeigt.

    Fatal error: Class 'Ilch\Mapper' not found in C:\xampp\htdocs\gehlsen\application\modules\tourenverwaltung\mappers\termine.php on line 13



    Habe bei extends aber gar nichts geändert...
    Hier mal der Mapper.
    <?php
    /**
     * @copyright Ilch 2.0
     * @package ilch
     */
    
     /***** MAPPERS *****/
     
    namespace Modules\Tourenverwaltung\Mappers;
    
    use Modules\Tourenverwaltung\Models\termine as TerminModel;
    
    class termine extends \Ilch\Mapper
    {
        
    	
        public function getTermine($where = [])
        {
    		$TerminArray = $this->db()->select('*')
                ->from('termine')
                ->where($where)
                ->execute()
                ->fetchRows();
    
            if (empty($TerminArray)) {
                return [];
            }
    
            $Termine = [];
            foreach ($TerminArray as $TerminRow) {
                $TerminModel = new TerminModel();
                $TerminModel->setId($TerminRow['id']);
                $TerminModel->setName($TerminRow['name']);
                
                
    
                $Termine[] = $TerminModel;
            }
    
            return $Termine;
            
        }
    
        
        public function getTermineById($id)
        {
    		$Termine = $this->getTermine(['id' => $id]);
            return reset($Termine);
            
        }
    
        
    }


    kann es seind as du da einen Fehler drin hast ? kuck dir deinen Pfad an dort steht gehlsen ! Nehme an es soll gelesen heissen oder ? Wenn nicht dann bitte nicht Steinigen lachen
    [Es liegt in deiner Hand ob du der Schlächter bist oder das Vieh]
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Habe es hinbekommen...

    Jetzt aber mal ne andere Frage zu meinem VIEW..

    <?php 
    # Holt sich den Key welcher vom Controller ?bergeben wurde
    $eintraege = $this->get('eintraege'); ?>
    
    
    <h1>
    <?=$this->getTrans('ueberschrift')
    ?>
    </h1>
    <!-- Wenn Tabelle Eintr?ge nicht leer, dann ausgeben -->
    <?php if ($eintraege != ''): ?>
    
    	<table class="table table-hover">
      <thead>
        <tr>
          <th scope="col">Match</th>
          <th scope="col">Vorgang</th>
          <th scope="col">Name</th>
        </tr>
      </thead>
      <tbody>
      <?php foreach ($eintraege as $eintrag): ?>
        <tr>
          <th scope="row"></th>
          <td><?=$this->escape($eintrag->getId()) ?></td>
    	  <td><?=$this->escape($eintrag->getName()) ?></td>
    	</tr>
    <?php endforeach; ?>   
      </tbody>
    </table>
    
    <?php else: ?>
    <!-- sonst, Ausgabe keineEintraege -->
        <?=$this->getTrans('keineEintraege') ?>
    <?php endif; ?>


    Zeile 7:
    Warum muss genau diese Schreibweise verwendet werden ?
    Sobald man es auf 2 Zeilen aufteilt->Fehler...
    Nutzt man <?php=$this Fehler..
    Warum ist das sooo ???


    mfg


    Zuletzt modifiziert von RTX2070 am 06.10.2019 - 21:34:55

    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Slipi ilch.de Design
    Registriert seit
    19.01.2018
    Beiträge
    938
    Beitragswertungen
    117 Beitragspunkte
    Zeile 7 ist für die Sprache, es wird damit in Deutsch und Englisch das ausgegeben, was du in der en.php und de.php unter ueberschrift eingetragen hast.

    Die Schreibweise wurde von die Entwickler vordefinierten.

    Aber was genau meinst du auf 2 Zeilen aufgeteilt?
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Naja...
    Der Code ist genau so geschrieben.
    <?=$this->getTrans('ueberschrift')?>


    Kurzform um php einzuleiten ist klar
    <? Php-Code ?>


    Das =$this ist mir fremd...also mit dem = davor...

    Und wenn ich diese Codezeile nun auf 2-3 Zeilen aufteile...also soo
    <?
    =$this->getTrans('ueberschrift')
    ?>

    Oder so schreibe..also langform
    <?php=$this->getTrans('ueberschrift')?>
    
    <?php
    =$this->getTrans('ueberschrift')
    ?>


    Dann bekomme ich ne Fehlermeldung...
    Aber naja..habs ja gefunden, dennoch würde mich interessieren warum das so ist..

    Bringt jedenfalls echt Spaß sich durch den Quellcode zu kämpfen...da sieht man mal was mit Ilch so alles möglich ist.


    Zuletzt modifiziert von RTX2070 am 07.10.2019 - 19:52:54

    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    hhunderter Entwickler
    Registriert seit
    12.08.2018
    Beiträge
    433
    Beitragswertungen
    70 Beitragspunkte
    Die Schreibweise ist wie schon gesagt die kurze Einleitung von php und ein '='-Zeichen nachgestellt leitet ein eine Ausgabe ein.
    Ist nützlich wenn man zwischen html-Code eine php-ausgabe wie z.b. eine Sprach-Variable einfügen will ohne auf mehrere Zeilen Auslagen zu müssen.
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Ok.
    Also muss die Kurzform zwangsläufig in einer Zeile stehen...gibt ja sonst scheinbar nen Fehler

    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    hhunderter Entwickler
    Registriert seit
    12.08.2018
    Beiträge
    433
    Beitragswertungen
    70 Beitragspunkte
    Meines wissen ja, wenn man unbedingt über mehrere Zeilen die Ausgabe haben will dann stört auch die lange Ausschreibung nicht;)
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Die Kurzform <?= $var ?> bedeuted <?php echo $var ?>.
    Sie muss denke ich auch nicht in einer Zeile stehen, allerdings dürfen die 3 Zeichen <?= nicht getrennt werden.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Ahhhh...
    Jetzt macht es Sinn.
    Die Kurzform ist
    <?= ?>...

    Dachte das gleich gehört zum $this-> aber OK. Wieder dazu gelernt.

    Von php-net
    "...PHP 7 entfernt die Unterstützung von ASP-Tags und <script language="php"> Tags. Daher empfehlen wir beim Schreiben von PHP-Code für maximale Kompatibilität nur <?php ?> und <?= ?> zu verwenden...."

    Allerbest Heavy Metal
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Und schon wieder ich.

    Kurze Frage:

    Ich möchte bei einem Datenbank Insert den Namen vom angemeldeten User mit einfügen.
    Wie stelle ich dies am besten an?
    welche Methode liefert mir den Namen ?

    mfg

    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    Da solltest du lieber die ID des Users mit speichern lassen, über die id kriegst du alle informationen und im user modul gibt es genügend möglichkeiten diese abzufragen
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Hallo,

    wenn ich aus meinem Modul heraus zugriff auf das UserModul haben möchte um dessen Funktionen zu nutzen.

    Dann muss ich in meinem Controller doch nur ein Objekt des UserMappers erstellen oder sehe ich das falsch?

    Stehe gerade irgendwie aufm Schlauch.

    use Modules\User\Mappers\User as UserMapper;

    public function indexAction()
    {
    $userMapper = new UserMapper();
    
    $this->getView()
      ->set('userMapper', $userMapper);
    }


    Hatte in der Doku auch was gelesen von Abhängigkeit eines anderen Moduls..


    Zuletzt modifiziert von RTX2070 am 13.10.2019 - 20:16:36

    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.277
    Beitragswertungen
    356 Beitragspunkte
    Nein, dass siehst du nicht falsch.

    Beispiel
    Außerhalb der Klasse.
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/forum/controllers/Showposts.php#L21
    use Modules\User\Mappers\User as UserMapper;

    Innerhalb einer Funktion.
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/forum/controllers/Showposts.php#L89
    $userMapper = new UserMapper();

    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/forum/controllers/Showposts.php#L113
    $user = $userMapper->getUserById($userId);


    Nach Möglichkeit die Arbeit im Controller erledigen und die Ergebnisse dann in der View nutzen, anstatt den kompletten userMapper an die View zu übergeben.

    ZitatZitat
    Hatte in der Doku auch was gelesen von Abhängigkeit eines anderen Moduls..

    Ist dies hier gemeint?
    redmine.ilch2.de/projects/dev2/wiki/Configphp#depends

    Damit wird angegeben, dass dein Modul z.B. von einem anderen Modul abhängig ist d.h. das dieses installiert sein muss. Das User-Modul ist allerdings ein Systemmodul - also fester Bestandteil von Ilch. Dieses bräuchtest du dort nicht angeben.

    Systemmodule erkennst du am entsprechenden Eintrag in der config.php
    redmine.ilch2.de/projects/dev2/wiki/Configphp#system_module


    Zuletzt modifiziert von blackcoder am 13.10.2019 - 23:57:01
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Ok, danke dir.

    Mich würde noch interessieren
    Unterschied zwischen

    IndexAction()
    ShowAction()

    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.277
    Beitragswertungen
    356 Beitragspunkte
    Sind halt zwei verschiedene Aktionen im Modul.

    Beispiel Artikel-Modul

    Zugehörige Index-Aktion im Index-Controller des Artikel-Moduls
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/controllers/admin/Index.php#L61

    Zugehörige View
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/views/admin/index/index.php


    Zugehörige Treat-Aktion im Index-Controller des Artikel-Moduls
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/controllers/admin/Index.php#L87

    Zugehörige View
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/views/admin/index/treat.php


    Index-Aktion im Frontend (alle Artikel)
    demo.ilch.de/index.php/article/index/index
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/controllers/Index.php#L38

    Show-Aktion im Frontend (einzelner Artikel)
    demo.ilch.de/index.php/article/index/show/id/1
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/controllers/Index.php#L76


    "Action" muss immer an den Namen der Aktion (Index, Show, Treat, Delete, ...) angehangen werden.
    Daraus ergeben sich dann die Funktionsnamen.
    1 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Danke dir.

    Hast du die Screenshots jetzt extra gemacht oder gibt es irgendwo noch ne weitere Doku auf GitHub?

    Kurze Frage hätte ich noch.

    Ich prüfe gerne jeden Schritt mit var_dump() weil ich es so kenne von früher.
    Da mir das MVC Konzept aber eher fremd ist tue ich mich selbst hiermit schwer zumal es ja um Module geht welche ja auch erst installiert werden.
    Hoffe du verstehst was ich meine.
    Hast du hier ein Tipp wie ich weiterhin mit var_dump arbeiten kann?
    Danke

    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    hhunderter Entwickler
    Registriert seit
    12.08.2018
    Beiträge
    433
    Beitragswertungen
    70 Beitragspunkte
    Die Screenshots hat er extra angefertigt und eine Weite Dokumentation gib es nicht.

    Zu deiner Frage: klar kannst du weiterhin mit echo/var_dump/print Ereignisse Debuggen.
    Die Ausgabe erscheint dann je nachdem wo die die Abfrage macht entweder oben auf der Seite oder im Content von dem Modul.
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Ich mal wieder.

    Leider tue ich mich noch immer etwas schwer mit dem MVC.

    Habe deshalb mal nach Tutorials gesucht und dieses hier gefunden.

    poe-php.de/oop/mvc-einfuehrung-framework

    Habe dies nun mehrfach durchgearbeitet aber komme bei einer Sache nicht weiter bzw. verstehe es nicht.

    Im Tutorial wird mittels PDO die Verbindung zur DB verwendet in welcher nur ein Name gespeichert ist.
    Soweit so gut...

    Diesen möchte ich allerdings abfragen und ausgeben.


    Die IndexAction vom IndexController sieht aber so aus....
    public function indexAction()
    	{
    		$this->view->setVars([
    			'name' => 'Stefan',
    		]);
    	}


    Vielleicht hat ja mal jemand Lust und Zeit sich die Zeilen mal anzuschauen.

    mfg

    0 Mitglieder finden den Beitrag gut.
  29. #29
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.277
    Beitragswertungen
    356 Beitragspunkte
    Du kannst dich nicht zu 100% auf das Tutorial beziehen. MVC ist einfach nur ein "Prinzip". Wie einzelne Dinge in Ilch 2 erledigt werden ist dann Ilch spezifisch.

    ZitatZitat
    Model View Controller (MVC, englisch für Modell-Präsentation-Steuerung) ist ein Muster zur Unterteilung einer Software in die drei Komponenten Datenmodell (englisch model), Präsentation (englisch view) und Programmsteuerung (englisch controller).

    de.wikipedia.org/wiki/Model_View_Controller

    Betreffend Datenbankzugriffe..
    Das Artikel-Modul nutzt z.B. die Tabellen "[prefix]_articles", "[prefix]_articles_cats" und "[prefix]_articles_content".

    Hier sind die Mapper vom Artikel-Modul. Hier werden Funktionen vom Modul zum Zugriff auf die Datenbank untergebracht.
    github.com/IlchCMS/Ilch-2.0/tree/v2.1.25/application/modules/article/mappers

    Beispiele:
    getArticles()
    Artikel aus der Datenbank holen
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/mappers/Article.php#L22

    getArticlesByCats()
    Artikel mit einer bestimmten Kategorie abfragen
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/mappers/Article.php#L82

    save()
    Neuen Artikel in der Datenbank speichern oder vorhandenen aktualisieren
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/mappers/Article.php#L578

    In den Funktionen im Mapper nach Möglichkeit den Query-Builder aus Ilch nutzen um Datenbankabfragen zu erstellen:
    redmine.ilch2.de/projects/dev2/wiki/Database_QueryBuilder

    Im Controller werden dann die Funktionen aus den Mappern genutzt.
    Beispiel:
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/controllers/admin/Index.php#L89
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/controllers/admin/Index.php#L149

    Die save-Funktion bekommt als Argument ein "Artikel-Model". Das ist quasi nur ein Objekt, welches alle nötigen Informationen des Artikels enthält.
    github.com/IlchCMS/Ilch-2.0/blob/v2.1.25/application/modules/article/models/Article.php


    Es gibt noch die Tabelle "[prefix]_config" in der du Einstellungen deines Moduls ablegen kannst.
    Speichern
    $this->getConfig()->set('article_articlesPerPage', '5')

    Lesen
    $articlesPerPage = $this->getConfig()->get('article_articlesPerPage')
    0 Mitglieder finden den Beitrag gut.
  30. #30
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    274
    Beitragswertungen
    46 Beitragspunkte
    Wieder einmal Danke ...


    Kurze Frage:

    MeineAdminView

    <?php if ($this->get('Termine') != ''): ?>
                        <?php foreach ($this->get('Termine') as $Termin): ?>
                            <tr>
                                <input type="hidden" name="items[]" value="<?=$Termin->getId() ?>" />
                                <td><?=$this->getDeleteCheckbox('check_entries', $Termin->getId()) ?></td>
                                <td><?=$this->getEditIcon(['action' => 'treat', 'id' => $Termin->getId()]) ?></td>
                                <td><?=$this->getDeleteIcon(['action' => 'del', 'id' => $Termin->getId()]) ?></td>
                                <td><?=$Termin->getMatchcode() ?></td>
                                <td><?=$Termin->getVorgang() ?></td>
                                <td><?=$Termin->getName() ?></td>
    							<td><?=$Termin->getNachname() ?></td>
    							<td><?=$Termin->getStraße() ?></td>
    							<td><?=$Termin->getHausnummer() ?></td>
    							<td><?=$Termin->getPlz() ?></td>
    							<td><?=$Termin->getOrt() ?></td>
    							<td><?=$Termin->getLieferdatum() ?></td>
    							<td><?=$Termin->getUhrzeit() ?></td>
    							<td><?=$Termin->getInfo() ?></td>
    							<td><?=$Termin->getErsteller() ?></td>
                            </tr>
                        <?php endforeach; ?>


    In Zeile 4 bis 7 habe ich ja die Symbole zum Löschen, Edit etc....
    Im Adminbereich funktioniert das Löschen, editieren usw auch alles wunderbar...

    In der IndexView habe ich quasi die selbe Ausgabe, allerdings ohne diese Schaltflächen.
    Wie bekomme ich diese denn ebenfalls angezeigt ???

    Habe schon versucht einfach die Zeilen zu kopieren aber das geht nicht...bin wohl zu doof



    Hier die IndexView

    <?php 
    $termine = $this->get('Termine');
    ?>
    
    <h1><?=$this->getTrans('AlleLiefertermine')?></h1>
    
    <?php if ($termine != ''): ?>
    
    	<table class="table table-hover">
      <thead>
        <tr>
          <th scope="col">#</th>
    	  <th scope="col">Match</th>
          <th scope="col">Vorgang</th>
          <th scope="col">Name</th>
    	  <th scope="col">Nachname</th>
    	  <th scope="col">Straße</th>
    	  <th scope="col">HausNr.</th>
    	  <th scope="col">Plz</th>
    	  <th scope="col">Ort</th>
    	  <th scope="col">Lieferdatum</th>
    	  <th scope="col">Uhrzeit</th>
    	  <th scope="col">Info</th>
    	  <th scope="col">Nutzeraktionen</th>
    	  
        </tr>
      </thead>
      <tbody>
      <?php foreach ($termine as $termin): ?>
        <tr>
          <th scope="row"><?=$this->escape($termin->getId()) ?></th>
    	  <td><?=$termin->getMatchcode() ?></td>
    	  <td><?=$termin->getVorgang() ?></td>
    	  <td><?=$termin->getName() ?></td>
    	  <td><?=$termin->getNachname() ?></td>
    	  <td><?=$termin->getStraße() ?></td>
    	  <td><?=$termin->getHausnummer() ?></td>
    	  <td><?=$termin->getPlz()?></td>
    	  <td><?=$termin->getOrt()?></td>
    	  <td><?=$termin->getLieferdatum() ?></td>
    	  <td><?=$termin->getUhrzeit() ?></td>
    	  <td><?=$termin->getInfo() ?></td>
    	  
    	  
    	
    	</tr>
    <?php endforeach; ?>   
      </tbody>
    </table>
    
    
    <?php else: ?>
    
        <?=$this->getTrans('KeineTermine') ?>
    <?php endif; ?>

    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten