Hallo, wie übertrage ich per POST eine Variable aus einem select Feld? Normal per PHP bzw. PHPKit konnte ich das mittels $_POST['farblinks'] machen. Wie geht das beim wbb? möchte gerne meinen alten Farbgenerator fürs wbb anpassen. Das meiste hab ich schon, mir fehlt halt nur, wie ich das mit der Variable schreiben kann.
Wie POST Variable im wbb nutzen?
-
knuddchen -
7. Januar 2016 um 10:50 -
Geschlossen
Bitte in den Beiträgen keine externe Bilder einbinden, sondern nur die Dateianhänge verwenden.
Vielen dank.
Vielen dank.
-
-
du kannst per $_POST['...'] auch im WCF/WBB gesendeten Variablen ermitteln.
-
hört sich gut an. Wie schreibe ich die Stelle mit der Variable im template? Das ist jetzt mein Hauptproblem
-
Du must sämtliche Variablen die du an das Template übergibst einen Namen geben mit dem du diese aufrufen kannst.
du kannst diese dann per {$variabelName} aufrufen.
und übergeben must du diese an das Template mit
WCF::getTPL()->assign(array('ariabelName' => $this->variabelName)); -
schaue ich mir nachher mal an. Danke dir. Soll ein Farbgenerator für den Chat werden. Welcher dann /col #farbcode #farbcode
ausgibt um den Nicknamen umzufärben mit Vorschauansicht. -
Habe das momentan so:
PHP: FarbgeneratorPage.class.php
Alles anzeigen<?php namespace wcf\page; use wcf\data\user\online\UsersOnlineList; use wcf\data\user\User; use wcf\system\request\LinkHandler; use wcf\system\MetaTagHandler; use wcf\system\language\LanguageFactory; use wcf\system\WCF; /** * Shows the farbgenerator page. * * @author Matthias Beier * @copyright 2015 ac-cafe.de * @license LGPL * @package de.ac-cafe.wcf.farbgenerator */ class FarbgeneratorPage extends AbstractPage { /** * @see wcf\page\AbstractPage::$activeMenuItem */ public $activeMenuItem = 'wcf.page.farbgenerator'; /** * user id * @var integer */ public $userID = 0; /** * user object * @var \wcf\data\user\User */ public $user = null; public $templateName = 'farbgenerator'; /** * @see Page :: assignVariables () */ public function assignVariables () { parent :: assignVariables (); WCF::getTPL()->assign(array( 'farblinks' => $this->farblinks, 'farbrechts' => $this->farbrechts)); } }
und das template so:
HTML: farbgenerator.tpl
Alles anzeigen{include file='documentHeader'} <head> <title>{lang}wcf.page.farbgenerator.title{/lang} - {PAGE_TITLE|language}</title> {include file='headInclude'} </head> <body id="tpl{$templateName|ucfirst}"> {include file='header'} <header class="boxHeadline"> <h1>{lang}wcf.page.farbgenerator.title{/lang}</h1> </header> {include file='userNotice'} <div class="container marginTop"> <ul class="containerList farbgeneratorList"> <li class="farbgeneratorBox"> <div> <div class="containerHeadline"> {if FARBGENERATOR_PAGE_OPTION == true} <h3>{lang}wcf.page.farbgenerator.secondTitle{/lang}</h3> <p>{lang}wcf.page.farbgenerator.contentText1{/lang}</p><br /> <p>{lang}wcf.page.farbgenerator.contentText2{/lang}</p><br /> <p>{lang}wcf.page.farbgenerator.contentText3{/lang}</p><br /> <form method="post" action="index.php?farbgenerator"> <div class="container farbgenTable"> <table class="farbgenTablecontent" width="100%"> <tr> <td width="40%" align="center"> <select name="farblinks" size="1"> <option >---1. Farbe---</option> <option value="#ffb2b2" style="background-color: #ffb2b2;">#ffb2b2</option> </select> <select name="farbrechts" size="1"> <option >---2. Farbe---</option> <option value="#ffb2b2" style="background-color: #ffb2b2;">#ffb2b2</option> </select> <div class="formSubmit"> <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" /> {@SECURITY_TOKEN_INPUT_TAG} </div> </td> <td width="60%" valign="top"> <p align="center"><input type="text" name="nick" value="{@$__wcf->getUserProfileHandler()->username}"></p> <p align="center">Kopiere nun folgenden Code in den Chat:</p><p></p> <p align="center"><input type="text" name="col" value="/col {@$this->farblinks} {@$this->farbrechts}"></p> </td> </tr> </table> </div> </form> {else} <h3>{lang}wcf.page.farbgenerator.optionFalse{/lang}</h3> {/if} </div> </div> </li> </ul> </div> {include file='footer'} </body> </html>
Der Code aus dem Template wurde etwas gekürzt auf nur eine Farbe im select, damit hier der Code nicht zu lang ist.
Irgendwie fehlt da was und will nicht die beiden Variablen anzeigen bzw. ausgeben. Ich schätze mal, dass was in der phpdatei fehlt, nur weiss ich leider nicht was. Dies ist momentan mein erstes Plugin, was noch recht einfach ist
-
Du hast die Variablen
nicht deklariert in der PHP Datei.
Und ihnen keinen Wert zu gewiesen.So wird eine Variabel in PHP deklariert.
Am besten die Grundlagen von PHP lernen dann, würde diese Fehler nicht passieren -
ah, wenn ich das jetzt richtig verstanden habe, dann müsste ich die farbcodes als array dort in der phpdatei nochmal zusätzlich deklarieren. :o Voll komplizierter als bei phpkit aber man will ja was dazu lernen
dann schau ich mir das morgen in Ruhe an. danke dir erstmal für den Tipp -
irgendwie will das nicht so klappen. wenn ich sage
public $farbelinks = '#ffb2b2';dann zeigt er mir die Farbe in dem Feld an, aber ich möchte ja dass er die Farbe aus dem $_POST['farbelinks'] holt. Wenn ich
public $farbelinks = $_POST['farbelinks'];mache, dann kommt Errormeldung bin momentan echt grad am Verzweifeln
Hier mal mein aktueller Code
PHP: FarbgeneratorPage.class.php
Alles anzeigen<?php namespace wcf\page; use wcf\system\request\LinkHandler; use wcf\system\MetaTagHandler; use wcf\system\language\LanguageFactory; use wcf\system\WCF; use wcf\util\ArrayUtil; use wcf\util\HeaderUtil; use wcf\form\IForm; /** * Shows the farbgenerator page. * * @author Matthias Beier * @copyright 2015 ac-cafe.de * @license LGPL * @package de.ac-cafe.wcf.farbgenerator */ class FarbgeneratorPage extends AbstractPage { /** * @see wcf\page\AbstractPage::$activeMenuItem */ public $activeMenuItem = 'wcf.page.farbgenerator'; public $templateName = 'farbgenerator'; /** * @see \wcf\form\IForm::readFormParameters() */ public function readFormParameters() { parent:: readFormParameters(); if(isset ($_POST['farbelinks'])) $this->farbelinks = array('#ffb2b2' => '#ffb2b2'); if(isset ($_POST['farberechts'])) $this->farberechts = array('#ffb2b2' => '#ffb2b2'); } public $farbelinks = array('#ffb2b2' => '#ffb2b2'); public $farberechts = array('#ffb2b2' => '#ffb2b2'); /** * @see Page::assignVariables() */ public function assignVariables() { parent::assignVariables(); WCF::getTPL()->assign(array( 'farbenlinks' => $this->farbelinks, 'farbenrechts' => $this->farberechts )); } }
-
Eine frage, warum sind die Farblinks eine array?
Übergib diese doch als stringZweitens musst du hier auch die Variablen speichern die du sendest
PHPif(isset ($_POST['farbelinks'])) $this->farbelinks = StringUtil::trim($_POST['farbelinks']); if(isset ($_POST['farberechts'])) $this->farberechts = StringUtil::trim($_POST['farberechts']);
und dann oben noch das hier hinzufügen
use wcf\util\StringUtil;
-
hmm, also es sind 182 farben einmal für links und 182 für rechts. Das heißt, ich kann die einzeln schlecht in diese public zeile einfügen. dass müsste man anders machen. Also wäre sicher die beste Variante, die beiden Farben, die ausgewählt wurden in 2 Spalten zu speichern in der Usertabelle in der DB und von dort dann nach dem Speichern über das Feld dann auslesen. Wie man Daten aus der Datenbank abfragt, hab ich im Tutorial schon gesehn. Nur noch nicht, wie man per update in die wcf1_user reinspeichert.
Oder werden da auch Dinge in die Session gespeichert?
-
-
gibt es dann noch ein paar fragen ?
-
Erstmal nicht, werde mich damit aber trotzdem noch weiter rumspielen, irgendwann krieg ichs doch noch richtig hin