php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack (3) Themen-Optionen Thema bewerten
Alt 06.11.2008, 20:23  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 291
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Hatte ein Problem und bin mit einer Lösung hier rausgekommen die es in sich hat ^^

Also ich werde es auf jedenfall weiterempfehlen, auch wenn man sich erstmal einarbeiten muss, man merkt doch das es später um einiges leichter ist. Wenn ich schon dran denke wieviel PHP Code ich schon allein für das Registrierungsformular geschrieben habe um die Eingaben zu überprüfen usw.
Nun ist das alles schön im Controller und es ist einfacher zu bearbeiten.
KarlEgon ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.11.2008, 18:59  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 291
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Ich bin es nochmal, habe da folgende Frage.
Code:
<@controller namespace="modules::game::register::pres::documentcontroller" file="register_controller" class="RegisterController" @>
<core:addtaglib namespace="tools::form::taglib" prefix="html" class="form" />
Die Registrierungsdaten werden auch f&uuml;r das Portal verwendet
<html:form name="RegisterForm" method="post" action="">
	<form:text name="usernick" class="eingabe_feld" validate="true" validator="Text" button="register" />
	<form:password name="userpass" class="eingabe_feld" validate="true" validator="Text" button="register" />
	<form:password name="userpass2" class="eingabe_feld" validate="true" validator="Text" button="register" />
	<form:text name="useremail" class="eingabe_feld" validate="true" validator="EMail" button="register" />
	<form:text name="useremail2" class="eingabe_feld" validate="true" validator="EMail" button="register" />
	<form:select name="userrasse" />
	<!-- <form:addtaglib namespace="modules::captcha::pres::taglib" prefix="form" class="captcha" />
    <form:captcha
              text_class="eingabe_feld"
              text_style="width: 150px;"
              validate="true"
              button="register1"
    />-->
	<form:button name="register" value="Registrieren" class="eingabe_feld" />
</html:form>
Dies ist mein Registrierungsformular.
Und nun mein Controller:
PHP-Code:
$transform true;
            
$Manager__Register = &$this->__getServiceObject('modules::game::register::biz','RegisterManager');
            
$Form__Register $this->__getForm("RegisterForm");
            
$usernick $Form__Register->getFormElementByName("usernick");
            
$userpass $Form__Register->getFormElementByName("userpass");
            
$userpass2 $Form__Register->getFormElementByName("userpass2");
            
$useremail $Form__Register->getFormElementByName("useremail");
            
$useremail2 $Form__Register->getFormElementByName("useremail2");
            
$userrasse $Form__Register->getFormElementByName("userrasse");
if(
$Form__Register->get("isSent")) {
                
$Form__Register->set('isValid',true);
                if(
$Form__Register->get('isValid')) {
                    
$transform false;
                }
                if(
$userpass->getAttribute('value')!=$userpass2->getAttribute('value')) {
                    
$userpass->setAttribute('style',$userpass->getAttribute('style').'; border: 2px solid red;');
                    
$userpass2->setAttribute('style',$userpass2->getAttribute('style').'; border: 2px solid red;');
                    
$Form__Register->set('isValid',false);
                    
$transform true;
                }
                if(
$useremail->getAttribute('value')!=$useremail2->getAttribute('value')) {
                    
$useremail->setAttribute('value',"");
                    
$useremail->setAttribute('style',$useremail->getAttribute('style').'; border: 2px solid red;');
                    
$useremail2->setAttribute('value',"");
                    
$useremail2->setAttribute('style',$useremail2->getAttribute('style').'; border: 2px solid red;');
                    
$Form__Register->set('isValid',false);
                    
$transform true;
                }
            }
if(
$transform) {
                
$userpass->setAttribute('value',"");
                
$userpass2->setAttribute('value',"");
                
$Races $Manager__Register->loadRaces();
                foreach(
$Races as $Race) {
                    
$userrasse->addOption($Race->getAttribute('name'),$Race->getAttribute('ID'));
                }
                
$Form__Register->transformOnPlace();
            } else {
                
$usernick $usernick->getAttribute('value');
                
$userpass hash('sha256',$userpass->getAttribute('value'));
                
$useremail $useremail->getAttribute('value');
                
$userrasse1 = &$userrasse->getSelectedOption();
                
debugprint($userrasse1);
                
$Manager__Register->registerUser($usernick,$userpass,$useremail,1);
            } 
Nun habe ich das Problem, dass ich die Select Felder nicht auslesen kann, das Debugprint (ein formatiertes print_r) zeigt nichts an, habe schon einiges versucht, aber es wird einfach nichts zurück gegeben. Woran kann das liegen?
KarlEgon ist offline   Mit Zitat antworten
Alt 12.11.2008, 21:27  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KarlEgon,

ich nehme an, das liegt an den Kontrollstrukturen. Das Select-Feld wird nur dann gefüllt, wenn die Variable $transform ein true enthält.Ist das nicht so, kann das Presetting auch keine selektierte Option finden und gibt dir null zurück. Siehe hierzu Adventure PHP Framework (tools): form_taglib_select Class Reference.


Ich würde die Befüllung daher vor das if ziehen, dann sollte das klappen.


Viele Grüße,
Christian
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 12.11.2008, 21:59  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 291
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Danke! Hätte ich auch selbst drauf kommen können! Nun kann ich weiter machen ^^
KarlEgon ist offline   Mit Zitat antworten
Alt 16.11.2008, 22:20  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KarlEgon,

Zitat:
Die Sache mit dem Parent Template werde ich wahrscheinlich heute Abend ausprobieren, finde ich ganz nützlich für Listen usw.
Ich habe am Wochenende im Rahmen der neuen Dokumentationsseite (still beta ) den <core:appendnode />-Tag implementiert. Dieser sollte dir bei der Aufgabenstellung, wiederverwendbare Template-Fragmente einzubinden auf jeden Fall helfen. Hinweise zur Nutzung und zur Doku findest du unter forum.adventure-php-framework.org [de] &bull; Thema anzeigen - Einführung <core:appendnode />-Tag. Würde mich über Feedback hier oder im APF-Forum sehr freuen.

Wie weit bist du mit dem Rest deiner Implementierung schon gekommen? Gab es noch andere Herausforderungen?


Viele Grüße,
Christian
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 04.12.2008, 08:52  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 291
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Also die Sache mit dem Parent Template habe ich folgendermaßen realisiert.

Im Controller:
PHP-Code:
$parentTemplateName 'list';
$docParent $this->__Document;
while(
$docParent->hasParent() && $docParent->__ParentObject->hasParent()) {
    
$docParent $docParent->__ParentObject;
}
$Template__List $this->searchTemplate($docParent,$parentTemplateName);
if(
$Template__List!=null) {
    
$Navigation__Manager = &$this->__getServiceObject('modules::game::navigation::biz','NavigationManager');
    
$NaviList $Navigation__Manager->getNavigation();
    
$buffer = (string)'';
    if(
$NaviList!=-1) {
        foreach(
$NaviList as $NaviItem) {
            
$buffer .= $this->buildNaviItem($NaviItem);
        }
    }
    
$Template__List->setPlaceHolder('item',$buffer);
    return 
$Template__List->transformTemplate();
}

private function 
searchTemplate($parent,$searchedTemplateName) {
    
$parentTemplate null;
    
$children $parent->getByReference('Children');
    foreach(
$children as $objectID => $DUMMY) {
        if(
get_class($children[$objectID]) == 'html_taglib_template' && $children[$objectID]->getAttribute('name') == $searchedTemplateName) {
            
$parentTemplate $children[$objectID];
            break;
        } else {
            if(
$children[$objectID]->hasChildren()) {
                
$parentTemplate $this->searchTemplate($children[$objectID],$searchedTemplateName);
                if(
$parentTemplate->getAttribute('name')==$searchedTemplateName) {
                    break;
                }
            }
        }
    }
    return 
$parentTemplate;

Und den Pagecontroller habe ich folgendermaßen erweitert:
PHP-Code:
function hasParent() {
    if(
$this->__ParentObject!=null) {
        return 
true;
    }
    return 
false;
}

function 
hasChildren() {
    return 
count($this->__Children);

core:appendnode habe ich noch nicht ausprobiert. Sonst gab es eigentlich erstmal keine Probleme aber wir sprechen das ja gerade durch ^^
KarlEgon ist offline   Mit Zitat antworten
Alt 04.12.2008, 14:29  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KarlEgon,

einige Anmerkungen zum Code:

Zitat:
$docParent->__ParentObject->hasParent()
Das funktioniert nur, weil __ParentObject noch (!) public ist. ich würde hier ein

PHP-Code:
$grandParent = &$docParent->getByReference('ParentObject'); 
(PHP4) oder ein

PHP-Code:
$grandParent $docParent->getByReference('ParentObject'); 
in PHP 5 schreiben.


Zitat:
Und den Pagecontroller habe ich folgendermaßen erweitert:
Wo hast du das eingefügt? In der pagecontroller.php? Falls ja, würde ich das im nächsten Release mit aufnehmen, denn das sind Funktionen, die öfter gebraucht werden können.


Zitat:
core:appendnode habe ich noch nicht ausprobiert.
Das Tag ist sicher an anderer Stelle auch für dich hilfreich, denn über das Tag eingebundene Templates verhalten sich wie likal definierte, so dass du eine Wiederverwendbarkeit von Templates hast.


Zitat:
Sonst gab es eigentlich erstmal keine Probleme aber wir sprechen das ja gerade durch ^^
Freut mich. Solltest du mal was zum zeigen haben, würde ich mich über einen Demo-Link freuen.


Viele Grüße,
Christian
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 04.12.2008, 14:34  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 291
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Wo hast du das eingefügt? In der pagecontroller.php? Falls ja, würde ich das im nächsten Release mit aufnehmen, denn das sind Funktionen, die öfter gebraucht werden können.
Ja das habe ich in die pagecontroller.php eingefügt.

Zitat:
Das funktioniert nur, weil __ParentObject noch (!) public ist. ich würde hier ein
...
Ja das werde ich noch ändern, habe das so übernommen, da du irgendwann mal ein Beispiel damit gebracht hast, habe es nicht weiter angeschaut, aber Recht hast du natürlich.

Zitat:
Freut mich. Solltest du mal was zum zeigen haben, würde ich mich über einen Demo-Link freuen.
Werde ich dir zukommen lassen, allerdings ist noch nicht sehr viel realisiert, eigentlich nur die Navigation und halbwegs die Registrierung.
KarlEgon ist offline   Mit Zitat antworten
Alt 04.12.2008, 14:35  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hi,

ok, dann nehme ich die Änderungen in das Release 1.8-RC2 auf, RC1 gibt es noch in dieser Woche.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 04.12.2008, 14:51  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 291
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Darauf freue ich mich schon.

Werde mich wieder melden, falls irgendwelche Probleme auftauchen.
KarlEgon ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/php-fortgeschrittene/48424-erledigt-variablen-einem-template-ersetzen.html
Erstellt von For Type Datum
Adventure PHP Framework - Downloads This thread Refback 05.12.2008 21:54
Adventure PHP Framework - Literatur This thread Refback 21.11.2008 12:58
forum.adventure-php-framework.org [de] • Thema anzeigen - Einführung <core:appendnode />-Tag This thread Refback 20.11.2008 19:41

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] ob_start verwirft gesetzte Variablen?! tohms PHP Tipps 2008 3 19.10.2008 16:50
Lieber Template oder Normal für ein community? mysteryxxx PHP Tipps 2008 8 17.09.2008 23:04
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Übergeben von Variablen an in PHP eingebundenes Perl-Script shredder01 PHP Tipps 2008 3 04.04.2008 09:25
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
variablen aus db ersetzen snatch-ic PHP Tipps 2006 7 21.05.2006 01:51
template in template einfuegen tonne PHP Tipps 2005-2 8 10.11.2005 22:24
In Fuktionen alle Variablen Global stellen ? atom-dragon PHP Tipps 2005-2 5 22.07.2005 04:30
Template System oder Lösung gesucht PHP Tipps 2005 14 21.05.2005 22:07
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
suche ein bestimmtes template system PHP Tipps 2004-2 2 07.11.2004 19:49
Template Parser PHP-Fortgeschrittene 9 06.10.2004 23:04
mit print Variablen in String ersetzen PHP Tipps 2004 3 27.09.2004 21:29
Variablen per adresse übergeben rocco PHP Tipps 2004 7 24.07.2004 12:03
[Erledigt] Template Scripting PHP-Fortgeschrittene 2 04.06.2004 18:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
apf getselectedoption, php-code email name ersetzen, php code html template ersetzen, php mail variable ersetzen, apf getselectedoption doesnt work

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum