Placeholder

Anmerkungen, Fragen und Hinweise zur Konfiguration dürfen in diesem Forum gepostet werden. // Notes, questions, and hints on the configuration can be posted here.
Antworten
Ralf2011

Placeholder

Beitrag von Ralf2011 » 11.07.2012, 10:17:29

Hallo,

möchte diesen Platzhalter setzten

Code: Alles auswählen

<meta name="date" content="<html:placeholder name="test"/>"/> 

Code: Alles auswählen

      try {		
				//Platzhalter füllen
				$this->setPlaceHolder('test', date('Y-m-d'));
		     // Inhalt der Seite auslesen
         $select = 'SELECT PageContent FROM demopage_content WHERE PageURLName = \''.$page.'\' LIMIT 1';
         $result = $SQL->executeTextStatement($select);
         $data = $SQL->fetchData($result);
					
         // Inhalt der Seite ausgeben
				 $this->setContent($data['PageContent']);
				 
      } catch (Exception $e) {
         $this->setContent($e->getMessage());
         return;
      }
Es kommt aber

[content_v1_controller::setPlaceHolder()] No placeholder object with name "test" composed in current document for document controller "content_v1_controller"! Perhaps tag library html:placeholder is not loaded in current template!


Laut doku hab ich aber alles richtig gemacht...:/ es steht auch nirgendwas was das ob ich noch was einbinden muss oder so?

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Placeholder

Beitrag von Megger » 11.07.2012, 10:28:53

Du willst einen Placeholder setzen, überschreibst dann allerdings den Inhalt!

Also zu dem Zeitpunkt wo das APF den Placeholder ersetzen will, hast du bereits den gesamten Inhalt mit $data['PageContent'] überschrieben und wenn da kein PlaceHolder definiert ist, dann findet das APF diesen nicht!

Für den Content würde ich dann auch auf einen Placeholder setzen

Code: Alles auswählen

<html:placeholder name="content" />
und diesen dann entsprechend setzen

Code: Alles auswählen

$this->setPlaceHolder('content', $data['PageContent']);
 
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Ralf2011

Re: Placeholder

Beitrag von Ralf2011 » 11.07.2012, 10:34:02

Das ändert nur leider nichts an der Tatssache :(

hier mein Controller

Code: Alles auswählen

<?php
import('tools::request', 'RequestHandler');

class content_v1_controller extends base_controller {

   public function transformContent() {

      try {
			
         $cM = &$this->getServiceObject('core::database', 'ConnectionManager');
         /* @var $cM ConnectionManager*/
         $SQL = &$cM->getConnection('content-database');
         /* @var $SQL AbstractDatabaseHandler */
				 
      } catch (DatabaseHandlerException $e) {
         $this->setContent($e->getMessage());
         return;
      }

			
      // URL-Parameter beziehen
			$page = RequestHandler::getValue('Page', 'Startseite');
      // Parameter gegen SQL-Injections absichern
      $page = $SQL->escapeValue($page);
			


      try {		
				//Platzhalter füllen für Header
				$this->setPlaceHolder('test', date('Y-m-d'));
				
				
		     // Inhalt der Seite auslesen
         $select = 'SELECT PageContent FROM demopage_content WHERE PageURLName = \''.$page.'\' LIMIT 1';
         $result = $SQL->executeTextStatement($select);
         $data = $SQL->fetchData($result);
					
         // Inhalt der Seite ausgeben
				 $this->setPlaceHolder('content', $data['PageContent']);
				 
      } catch (Exception $e) {
         $this->setContent($e->getMessage());
         return;
      }

   }
}

?>
wenn ich $this->setPlaceHolder('test', date('Y-m-d')); auskommentiere geht es ja ohne Probleme :/

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Placeholder

Beitrag von Megger » 11.07.2012, 10:56:48

Zeig dann auch mal dein entsprechendes Template
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Ralf2011

Re: Placeholder

Beitrag von Ralf2011 » 11.07.2012, 11:00:31

Ich habe ganz normal da "website" Template aus dem TUT genommen und oben nur eingefügt

Code: Alles auswählen

<meta name="date" content="<html:placeholder name="test"/>"/>
ansonsten ist alles unverändert

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Placeholder

Beitrag von Megger » 11.07.2012, 11:09:22

Ein STRG+C und STRG+V wären trotzdem nicht schlecht

Und ein Link zum Tutorial schadet auch nicht (dieses?)

Zeid mal die content.html!
Ich vermute, dass du innerhalb des ContentController einen Placeholder setzen willst, den du aber gar nicht in der content.html eingebaut hast sondern in einer anderen html Datei und das klappt dann nicht
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Ralf2011

Re: Placeholder

Beitrag von Ralf2011 » 11.07.2012, 11:12:38

website.html

Code: Alles auswählen

<html>
<meta name="date" content="<html:placeholder name="test"/>"/> 
<head>
   <title>TestWebSite</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
   <style type="text/css">
      body {
         text-align: center;
         background-color: #dddddd;
         font-family: Arial, Helvetica, sans-serif;
      }

      .table_layout {
         border: 1px solid black;
         background-color: white;
         font-size: 12px;
      }

      .table_keyvisual {
         background-color: #9999FF;
         text-align: center;
         vertical-align: middle;
         height: 100px;
         width: 100px;
         color: white;
         font-size: 25px;
      }

      .table_header {
         width: 700px;
         height: 100px;
         background-color: #FFFF99;
         padding: 5px;
         text-align: center;
         vertical-align: middle;
         font-size: 50px;
         color: #dddddd;
      }

      .table_menu {
         width: 100px;
         height: 500px;
         background-color: #99CC66;
         padding-left: 10px;
         text-align: left;
         vertical-align: top;
      }

      .table_content {
         width: 700px;
         height: 500px;
         padding: 5px;
         text-align: left;
         vertical-align: top;
      }

      a:link {
         color: black;
         font-weight: bold;
         text-decoration: none;
      }

      a:visited {
         color: black;
         font-weight: bold;
         text-decoration: none;
      }

      a:focus {
         color: black;
         font-weight: bold;
         text-decoration: underline;
      }

      a:hover {
         color: black;
         font-weight: bold;
         text-decoration: underline;
      }

      a:active {
         color: black;
         font-weight: bold;
         text-decoration: underline;
      }
   </style>
</head>
<body>
<center>
   <table width="800" border="0" cellpadding="0" cellspacing="0" class="table_layout">
      <tr>
         <td class="table_keyvisual">
            K e y
            <br/>
            V i s
            <br/>
            u a l
         </td>
         <td class="table_header">
            <core:importdesign namespace="sites::testwebsite::pres::templates" template="header"/>
         </td>
      </tr>
      <tr>
         <td class="table_menu">
            <core:importdesign namespace="sites::testwebsite::pres::templates" template="menu"/>
         </td>
         <td class="table_content">
            <core:importdesign namespace="sites::testwebsite::pres::templates" template="content"/>
         </td>
      </tr>
   </table>
</center>
</body>
</html>
ja dieses meinte ich :)

content.html

Code: Alles auswählen

<@controller namespace="sites::testwebsite::pres::documentcontroller" file="content_v1_controller" class="content_v1_controller" @>

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Placeholder

Beitrag von Megger » 11.07.2012, 11:26:19

OK folgendes Problem:
Du willst im content_v1_controller einen Placeholder setzen, der in der content.html nicht vorhanden ist, deswegen bekommst du die Fehlermeldung!

Einfachste Lösungsmöglichkeit:
Du erstellst dir einen weiteren Controller -> WebsiteController.php
Und setzt dort deinen entsprechenden PlaceHolder

In der website.html bindest du dann oben deinen WebsiteController ein, so wie du in der content.html den content_v1_controller eingebunden hast!

Außerdem kannst du im Controller wieder setContent schreiben, das sollte funktionieren (war halt in meiner ersten Antwort nur eine Vermutung, da ich die genaueren Umstände nicht kannte)

Vielleicht hilft dir ja auch mein Tutorial ein bisschen um das APF besser zu verstehen, kannst es dir ja mal durchlesen, ich denke es ist interessant auch wenn man kein Browsergame erstellen will :D
http://gagugaming.de/apf/tutorial-brows ... -schritte/
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Ralf2011

Re: Placeholder

Beitrag von Ralf2011 » 11.07.2012, 12:10:40

Ok da läuft es. :)

Derzeit find ich das Template noch echt kompliziert. Versteh auch nicht wozu die Deit content_file.html gut sein soll ^^
Aber man muss sich auch bissl reinarbeiten. Werd heute nachmittag mal versuchen ein Layout von mir damit zu machen, mal sehen wie das da so läuft :)

Sehe ich das richtig das für jede Art der Ausgabe (unterschiedliche Seite) ein Controller gebraucht wird? Beispiel. Index-Seite und sagen wir eine Bildergalerie?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Placeholder

Beitrag von dave » 11.07.2012, 12:15:18

Ein Template braucht nicht zwingend einen Controller.

Du benötigst den Controller nur, wenn du dynamisch in das Template etwas einfügen willst, beispielsweise Inhalte aus einer Datenbank. Hast du einfach nur statischen Inhalt, ein Impressum zum Beipsiel, welches sind nicht ändert und welches auch nicht durch eine seperate Oberfläche adminsitrierbar sein soll, benötigt dieses keinen Controller.

Bindest du ein Formular mit den APF-Komponenten ein, benötigst du immer einen Controller, da sonst das Formular gar nicht ausgewertet wird und somit auch nicht angezeigt wird.


Hier mal kurz und kanpp, wie ich das mache:

Es gibt ein Template namens "konstrukt.html", welches von meiner "index.php" aufgerufen werd. In diesem Konstrukt importiere ich dann die einzelnen, weiteren Templates für den Head-Bereich, den Inhalt, die Navigation sowie den Fuss der Seite. In jedem dieser Templates kann ich einen anderen Controller implementieren und somit sämtliche Abläufe aufteilen.


Achso:
Herzlich Willkommen ;)

Ralf2011

Re: Placeholder

Beitrag von Ralf2011 » 11.07.2012, 12:31:52

Na wenn dann will ich sowas wir Impressum, Datenschutz und co auch so als CMS Seiten haben. Da kann ich es wenigstens von überall ändern.

Mein bisherigen php Code kann ich ja so lassen nur das ich eben das in einen setPlaceHolder oder in setContent schreiben muss, richtig?
Natürlich Mysql müsste ich auch etwas anpassen

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Placeholder

Beitrag von dave » 11.07.2012, 12:58:00

setContent kannst verwenden.

MySQL - guter Stichpunkt:
Schon vom GenericORMapper gehört, kurz GORM? Sehr mächtiges Tool, bei dem du nicht mehr die SQL-Statements selber schreiben musst. Schaus dir bei Gelegenheit mal an.

Hast du vor, ein eigenes CMS zu bauen oder willst du nur eine Seite bauen, welche am Ende auch administrierbar ist?

Ralf2011

Re: Placeholder

Beitrag von Ralf2011 » 11.07.2012, 13:23:07

dave hat geschrieben:setContent kannst verwenden.

MySQL - guter Stichpunkt:
Schon vom GenericORMapper gehört, kurz GORM? Sehr mächtiges Tool, bei dem du nicht mehr die SQL-Statements selber schreiben musst. Schaus dir bei Gelegenheit mal an.

Hast du vor, ein eigenes CMS zu bauen oder willst du nur eine Seite bauen, welche am Ende auch administrierbar ist?
Also vorwiegend möchte ich meine Seite umbauen (ist eine Fanseite über eine Band) mit Galerien, Setlisten, Berichten, Tourdaten usw.

Natürlich darf ein ADminbereich nicht fehlen. Derzeit habe ich halt alles mühseelig in extra Datein mit Layout sprich...index.php, alben.php, tour.php usw usw usw.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Placeholder

Beitrag von dr.e. » 13.07.2012, 13:56:24

Hallo Ralf,

wenn du eine Verwaltung einführen möchtest, kannst du dir mal viewtopic.php?f=11&t=615 bzw. viewtopic.php?f=11&t=939 ansehen. Diese sind Aufsätze auf das CMS mit denen du eine Seite recht einfach administrieren kannst. Für die dynamischen Parts kannst du eigene Module/Komponenten schreiben, die ihren Inhalt natürlich aus der Datenbank beziehen können.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast