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

Geschlossen
  1. #61
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Hier ...

    <?php
    
    
    namespace Modules\mod1\Models;
    
    
    
    class Termine extends \Ilch\Model
    {
       
        protected $id;
    	Protected $matchcode;
    	protected $vorgang;
    	protected $name;
    	protected $adresse;
    	protected $hausnummer;
    	protected $plz;
    	protected $ort;
    	protected $lieferung;
    	protected $lieferdatum;
    	protected $uhrzeit;
    	protected $info;
    	protected $ersteller;
    	protected $telefon;
    	
    	
    	// Wird noch ausgelagert
    	protected $frage = "Soll der Datensatz endgültig gelöscht werden?";
      
        public function sicherheitsFrage()
    	{
    		
    		return $this->frage;		
    		
    	}
    		
    	
    	
    	
    	public function getId()
        {
            return $this->id;
        }
    
        
        public function setId($id)
        {
            $this->id = $id;
    
            return $this;
        }
    
        
        
    	
    	
    	
    	
    	public function getName()
        {
            return $this->name;
        }
    
       
        public function setName($name)
        {
            $this->name = $name;
    
            return $this;
        }
    	
    	
    	
    	
      
    	
    	
    	
    	public function getVorgang()
        {
            return $this->vorgang;
        }
    
        
        public function setVorgang($vorgang)
        {
            $this->vorgang = $vorgang;
    
            return $this;
        }
    
        
    
        
    	
    	
    	
    	public function getMatchcode()
        {
            return $this->matchcode;
        }
    
        
        public function setMatchcode($matchcode)
        {
            $this->matchcode = $matchcode;
    
            return $this;
        }
    	
    	
    	
    	
    	
    	
    	public function getAdresse()
        {
            return $this->adresse;
        }
    
        
        public function setAdresse($adresse)
        {
            $this->adresse = $adresse;
    
            return $this;
        }
    	
    	
    	
    	
    	
    	
    	public function getHausnummer()
        {
            return $this->hausnummer;
        }
    
        
        public function setHausnummer($hausnummer)
        {
            $this->hausnummer = $hausnummer;
    
            return $this;
        }
    	
    	
    	
    	
    	public function getPlz()
        {
            return $this->plz;
        }
    
        
        public function setPlz($plz)
        {
            $this->plz = $plz;
    
            return $this;
        }
    	
    	
    	
    	
    	
    	
    	public function getOrt()
        {
            return $this->ort;
        }
    
        
        public function setOrt($ort)
        {
            $this->ort = $ort;
    
            return $this;
        }
    	
    	
    	
    	public function getLieferung()
        {
            return $this->lieferung;
        }
    
        
        public function setLieferung ($lieferung)
        {
            
    		$this->lieferung = $lieferung;
    
            return $this;
        }
    	
    	
    	
    	
    	
    	public function getLieferdatum()
        {
            return $this->lieferdatum;
        }
    
        
        public function setLieferdatum($lieferdatum)
        {
            $this->lieferdatum = $lieferdatum;
    
            return $this;
        }
    
    
    	
    	
    	public function getUhrzeit()
        {
            return $this->uhrzeit;
        }
    
        
        public function setUhrzeit($uhrzeit)
        {
            $this->uhrzeit = $uhrzeit;
    
            return $this;
        }
    	
    	
    	
    	public function getTelefon()
        {
            return $this->telefon;
        }
    
        
        public function setTelefon($telefon)
        {
            $this->telefon = $telefon;
    
            return $this;
        }
    	
    	
    	
    	
    	
    	public function getInfo()
        {
            return $this->info;
        }
    
        
        public function setInfo($info)
        {
            $this->info = $info;
    
            return $this;
        }
    	
    	
    	
    	
    	public function getErsteller()
        {
            return $this->ersteller;
        }
    
        
        public function setErsteller($ersteller)
        {
            $this->ersteller = $ersteller;
    
            return $this;
        }
        
    }

    0 Mitglieder finden den Beitrag gut.
  2. #62
    User Pic
    hhunderter Entwickler
    Registriert seit
    12.08.2018
    Beiträge
    438
    Beitragswertungen
    71 Beitragspunkte
    Also wenn du versuchst einen neuen Datensatz anzulegen wird das nicht klappen.
    Ändere deine Action mal zu:
    public function speichernAction()
        {
            $TerminMapper = new TerminMapper();
     
            $Termin = new TerminModel();
            if ($this->getRequest()->getPost('id')) {
                $Termin->setId($this->getRequest()->getPost('id'));
            }
    
            $Termin->setMatchcode($this->getRequest()->getPost('matchcode'))
                ->setVorgang($this->getRequest()->getPost('vorgang'))
                ->setName($this->getRequest()->getPost('name'))
                ->setAdresse($this->getRequest()->getPost('adresse'))
                ->setHausnummer($this->getRequest()->getPost('hausnummer'))
                ->setPlz($this->getRequest()->getPost('plz'))
                ->setLieferdatum($this->getRequest()->getPost('lieferdatum'))
                ->setUhrzeit($this->getRequest()->getPost('uhrzeit'))
                ->setLieferung($this->getRequest()->getPost('lieferung'))
                ->setOrt($this->getRequest()->getPost('ort'))
                ->setInfo($this->getRequest()->getPost('info'));
    
            $TerminMapper->save($Termin);
    
            $this->addMessage('saveSuccess');
    
            if ($this->getRequest()->getPost('id')) {
                $this->redirect()
                    ->to(['action' => 'anzeigen', 'id' => $this->getRequest()->getPost('id')]);
            } else {
                $this->redirect()
                    ->to(['action' => 'index']);
            }
        }
    0 Mitglieder finden den Beitrag gut.
  3. #63
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Das funktioniert leider auch nicht...

    0 Mitglieder finden den Beitrag gut.
  4. #64
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    pack mal dein submit in die form rein und nicht ausserhalb zwinker oder füge eins submit deinem element hinzu je nachdem wie dein gedanken weg dort ist^^, ist ja klar das kein Formular ausgelößt werden kann wenn kein submit vorhanden ist.

    Du wirst halt weitergeleitet wegen des Links vom a element aber deine form an sich wird ja gar nicht gestartet

    was du noch beachten musst weil du erst das a element mit deinem link hast und das input mit submit drin ist, ob nur der Link ausgeführt wird und das input deswegen ignoriert wird.

    Ich schreib gerade etwas verwirrend sorry, harter tag lachen


    nur als hilfe das meinte ich :

    <a class="btn btn-primary" href="<?= $this->getUrl(['action' => 'speichern', 'id' => $daten->getId()]); ?>">Termin ändern</a>
     
    </form>
    </div>
    </div>
    </div>
     
     
    <a href="<?= $this->getUrl(['action' => 'speichern']); ?>"><input type="submit" value="Termin ändern" /></a>



    Zuletzt modifiziert von Nex4T am 07.11.2019 - 18:05:35
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  5. #65
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Verstehe was du meinst...funktioniert aber leider auch nicht...
    Habe Testweise mal ne test.php in das ActionAttributt gepackt.

    In test.php mit var_dump das PostArray abgefragt.
    Nicht mal dies läuft....alles komisch

    0 Mitglieder finden den Beitrag gut.
  6. #66
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    Poste mal dein letzten stand der view vom treat
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  7. #67
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Das ist der aktuelle Stand, habe nochmal von vorn angefangen...aber geht einfach nicht mit dem updaten..

    <h1><?=($this->get('TerminArray') != '') ? $this->getTrans('edit') : $this->getTrans('add') ?></h1>
    
    <form class="form-horizontal" method="POST">
        <?=$this->getTokenField() ?>
        <div class="form-group">
            <label for="matchcode" class="col-lg-2 control-label">
                <?=$this->getTrans('matchcode') ?>
            </label>
            <div class="col-lg-1">
                <input type="text"
                       class="form-control"
                       id="matchcode"
                       name="matchcode"
                       value="<?=($this->get('TerminArray') != '') ? $this->escape($this->get('TerminArray')->getMatchcode()) : $this->escape($this->originalInput('matchcode')) ?>"/>
            </div>
        </div>
    <?=($this->get('TerminArray') != '') ? $this->getSaveBar('edit') : $this->getSaveBar('add') ?>
    </form>

    0 Mitglieder finden den Beitrag gut.
  8. #68
    User Pic
    hhunderter Entwickler
    Registriert seit
    12.08.2018
    Beiträge
    438
    Beitragswertungen
    71 Beitragspunkte
    Also ich hab mir noch mal dein Code angeschaut du bist im View "bearbeitenAction" und willst die Daten in der "speichernAction" bearbeiten/speichern also müsstest du auch in der "bearbeitenAction"-View die Form-action angeben :
    <form class="well form-horizontal bg" action="<?=$this->getUrl(['action' => 'speichern']) ?>" method="POST" >
    0 Mitglieder finden den Beitrag gut.
  9. #69
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Allerbest !!!!!

    Dafür feier ich dich ...danke lächeln

    Jetzt läuft es ohne Probleme....

    0 Mitglieder finden den Beitrag gut.
  10. #70
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Da bin ich wieder lächeln mit weiteren Fragen im Gepäck lächeln

    Bin jetzt schon ein ganzes Stück weiter mit meinem Modul und möchte nun die Pagination einbauen.
    Habe mich weites gehend am ArtikelModul orientiert.

    Im Backend habe ich die Möglichkeit zum Speichern der zugehörigen Settings eingebaut und das funzt auch alles.

    Im Frontend habe ich nun aber die Probleme.....

    Mein var_dump() zeigt folgendes:

    object(Ilch\Pagination)#69 (3) {
      ["page":protected]=>
      int(1)
      ["rowsPerPage":protected]=>
      string(1) "5"
      ["rows":protected]=>
      NULL
    }


    Meine Settings werden also geladen.... 5 Einträge pro Seite also.....

    Meine Foreach-Schleife zählt aber 6 Einträge, sodass mir ja eigentlich der Button zur zweiten Seite angezeigt werden müsste ....
    Es wird aber gar nichts angezeigt, außer meine Testausgabe in Zeile 89...

    Denke mein Fehler liegt irgendwo in Zeile 87 im getHTML....


    <?php 
    # Holt sich den Key welcher vom Controller ?bergeben wurde
    $termin = $this->get('Termin');
    $userMapper = $this->get('userMapper');
    $pagination = $this->get('pagination');
    
    $admin = null;
    if ($this->getUser()) {
        $admin = $this->getUser()->isAdmin();
    }
    
    // debuggen
    echo "<pre>";
    var_dump($pagination);
    echo "</pre>";
    
    ?>
    
    
    
    
    <h1><?=$this->getTrans('Alle Liefertermine')?></h1>
    
    
    <!-- href ruft die Action im Controler auf und übergibt variable mit Wert    hier.... $neuer = termin -->
    <h3><a class="btn btn-primary"  href="<?= $this->getUrl(['action' => 'anlegen', 'neuer' => 'termin']); ?>">Termin anlegen</a></h3>
    
    
    
    <!-- Wenn Tabelle Eintr?ge nicht leer, dann ausgeben -->
    <?php if ($termin != ''): 
    			$termineProSeite = 0;
    ?>
    
    	<table class="table table-hover">
      <thead>
        <tr>
    	  <th scope="col">Match</th>
          <th scope="col">Vorgang</th>
    	  <th scope="col">Lieferung</th>
          <th scope="col">Name/Firma</th>
    	  <th scope="col">Adresse</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 ($termin as $termin): 
    			$termineProSeite++;
      ?>
    			
    	<tr>
    	  <td><?=$termin->getMatchcode() ?></td>
    	  <td><?=$termin->getVorgang() ?></td>
    	  <td><?=$termin->getLieferung() ?></td>
    	  <td><?=$termin->getName() ?></td>
    	  <td><?=$termin->getAdresse() ?></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>
    	    <a class="btn btn-primary" href="<?= $this->getUrl(['action' => 'anzeigen', 'id' => $termin->getId()]); ?>">Anzeigen</a>
    		<a class="btn btn-warning"  href="<?= $this->getUrl(['action' => 'behandeln', 'id' => $termin->getId()]); ?>">Bearbeiten</a>
    		<?php if ($admin == true){?>
    		<a class="btn btn-danger" href="<?= $this->getUrl(['action' => 'delete', 'id' => $termin->getId()]); ?>">Löschen</a>
    		<?php } ?>
    	  </td>
    	  
    	  
    	
    	</tr>
    <?php endforeach; ?>
       
      </tbody>
    </table>
    <?php if ($termineProSeite > 0) { ?>
            <div class="pull-left">
                <?=$this->get('pagination')->getHtml($this, ['action' => 'index']); 
    			// Testausgabe ergibt 6
    			echo "$termineProSeite";
    			}?>
            </div>
    <?php else: ?>
    <!-- sonst, Ausgabe keineEintraege -->
        <?=$this->getTrans('no') ?>
    
    
    <?php endif; ?>


    Wer hilft weiter .... frech

    0 Mitglieder finden den Beitrag gut.
  11. #71
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
      <?php foreach ($termin as $termin): 
                $termineProSeite++;
      ?>


    Was ich dir zumindest sagen kann, dass du hier deine Variable überschreibst, und deshalb wird dieses Schleife nicht funktionieren, die "innere" Variable musst du anders nennen als die "äußere".

    Die Frage ist auch, ist $termin den überhaupt ein Array von vielen Terminen oder nur einer. Wenn es nur einer ist, dann ist der Aufruf von foreach falsch.

    Es ist ja wichtig, was in $termin ist und nicht in $pagination, zumindest für die Anzeige der Termine.

    Falls es mehrere Termine sind, nenne die Variable am besten auch $termine.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  12. #72
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Gebe dir Recht...die variable wird überschrieben dennoch funktioniert die Schleife.
    Werde es aber nochmals ändern und bessere Namen für die Variablen finden. Sind auch mehrere Termine...

    Aber was könnte der Fehler bei der Pagination sein?

    Pagination habe ich nur ausgegeben um zu testen ob mein Configwert drin ist...


    Zuletzt modifiziert von RTX2070 am 10.11.2019 - 08:43:37

    0 Mitglieder finden den Beitrag gut.
  13. #73
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Glaube mir ist ein kleiner Fehler in der ilch/Pagination.php aufgefallen bzw. ich glaube es müsste anders lauten wenn man sich die Verwendung im Artikel-Modul anschaut...


    Die Methode:
    Hier wird ja 1 Parameter erwartet ....
    public function setRowsPerPage($rowsPerPage)
        {
            if ($rowsPerPage == null) {
                $rowsPerPage = 20;
            }
            $this->rowsPerPage = $rowsPerPage;
        }


    Im IndexController vom ArtikelModul wird aber dies übergeben.
    $pagination->setRowsPerPage(!$this->getConfig()->get('article_articlesPerPage') ? $this->getConfig()->get('defaultPaginationObjects') : $this->getConfig()->get('article_articlesPerPage'));


    Das heißt, die Parameter werden aus der ConfigTabelle der Datenbank geladen.....
    Wenn also article_articlesPerPage gesetzt dann diesen Wert sonst den defaultPaginationObjects ebenfalls aus der ConfigTabelle....oder ???

    Dann müsste meiner Meinung nach die setRowsPerPage-Methode so geändert werden.... Zeile 4
    public function setRowsPerPage($rowsPerPage)
        {
            if ($rowsPerPage == null) {
                $rowsPerPage = $rowsPerPage;   <----------------------
            }
            $this->rowsPerPage = $rowsPerPage;
        }


    ....da doch sonst der statische Wert $rowsPerPage = 20; genommen wird oder denke ich schon wieder zu kompliziert/falsch ???

    0 Mitglieder finden den Beitrag gut.
  14. #74
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.305
    Beitragswertungen
    361 Beitragspunkte
    Die Zeile ruft setRowsPerPage() mit den Wert von "article_articlesPerPage" oder "defaultPaginationObjects" auf.
    In setRowsPerPage() ist $rowsPerPage also nicht null, sondern halt einer der beiden Werte.
    Falls setRowsPerPage() wirklich mal mit $rowsPerPage gleich null aufgerufen wird, wird halt 20 für $rowsPerPage genommen.
    0 Mitglieder finden den Beitrag gut.
  15. #75
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    OK ....
    Dann kannst du diesen Post gerne löschen....lag dann mal wieder falsch....

    Dennoch frage ich mich warum bei mir die Pagination nicht funzt:(


    Zuletzt modifiziert von RTX2070 am 10.11.2019 - 11:00:27

    0 Mitglieder finden den Beitrag gut.
  16. #76
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    Guten Morgen

    Ich gebe es auf....komme mit der Pagination nicht weiter.

    Bin wieder auf eure Hilfe angewiesen...

    0 Mitglieder finden den Beitrag gut.
  17. #77
    User Pic
    RTX2070 Hall Of Fame
    Registriert seit
    14.06.2019
    Beiträge
    277
    Beitragswertungen
    46 Beitragspunkte
    läuft nun doch .... habe es wieder einmal selbst hinbekommen.

    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten