Schrift
[thread]723[/thread]

Lösch Button (Seite 3)

Leser: 1


<< |< 1 2 3 4 5 6 7 >| >> 61 Einträge, 7 Seiten
master
 2006-05-11 19:28
#7508 #7508
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
@strat

Quote
nur wenn die if's im template und im code parallel sind, dann wird's unhandlich; aber das steht auch in der Doku zu HTML::Template (und vermutlich auch HTC)


Genau wie ich sagte dann gibts probleme.. :-)


Ok dein Beispiel:
Code (perl): (dl )
1
2
3
4
5
<;!-- TMPL_IF NAME=showImages -->;;
 <img src="blablubb.gif" alt="bildchen" />
<;!-- TMPL_ELSE -->;;
 bildchen
<;!-- /TMPL_IF -->;;


Kann man so lösen durch aufsplitten des templates.

(wobei so was "kleines" würde ich ev. auch direkt im code lassen)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
HTML_
<html>
Nun das Bild:
<;!-- TMPL_VAR NAME=BILD -->;;

</html>


PERL_
if ($wert)
{
    $template->param(BILD => ' <img src="blablubb.gif" alt="bildchen" />');
} else {
    $template->param(BILD => 'Bildchen');
}

PERL_
if ($wert) { $html = ' <img src="blablubb.gif" alt="bildchen" />'; } else { $html = 'Kein Bild'; }   #$html  = hier ist nun der code der Datei bild.html
$template->param(BILD => $html);

------ oder auslagern für perfekte trennung -------


HTML_
<html>
Nun das Bild:
<;!-- TMPL_VAR NAME=BILD -->;;
</html>


PERL_
if ($wert) { do 'bild.html'; } else { do 'keinbild.html'; }   #$html  = hier ist nun der code der Datei bild.html
$template->param(BILD => $html);


Wobei man diese methode noch verfeinern kann. ev. ein 2. template-objekt oder durch funktionen usw.
Code (perl): (dl )
1
2
3
4
PERL_
if ($wert) { do 'bild.html'; } else { do 'keinbild.html'; } &change($html);  

sub change {$template->param($_[0] => $_[1]); }


oder as am ende nur noch etwas in der art steht wie:
Code (perl): (dl )
&change('BILD','Bild.html', 'keinbild.html', $Wert); #Bei der Funktion wird Bild angezeigt. wenn der Wert nicht wahr ist, sonst die alternative


Man kann sich ja was basteln. und am ende hat man ev. sogar einen einzeiler.

Wobei das " do 'bild.html' ; " so nicht funkioniert..
Man braucht eigentlich eine sub, die das file einliest und an $HTML gibt.

Ausserdem kann ich so, viel mehr machen.u z. b. if (-e ) usw.

Klar ist mein Code oben nicht perfekt, nur eine Idee um zu zeigen wie sowas machbar ist.

Ich nutze also einfach ganz frech eine Variable um dort den entsprechenden code (der ev. flexibel sein soll) einzufügen.

Am Ende ist es sogar ordentlicher
eine art.

ps. du kannst auch eine funktion machen die ein 2. template objekt macht. die inkludierte datei als template sehen.
und am ende so in der Art zuweisen wie

Code: (dl )
$template->param(Bild =>  $template2->output()   );


wobei man das dann als funktion aufbauen könnte damit es schöner aussieht.

[CODE] &display($objekt, $var, $bild, $alternative); /CODE]\n\n

<!--EDIT|master|1147361993-->
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
Antworten mit Zitat
Gast Gast
 2006-05-11 19:42
#7509 #7509
master, es tut mir leid, aber du hast hier etwas gehörig
missverstanden. Sieh dir die Begriffe mal deutlich an: VIEWlogic
und BUSINESSlogic. Die Businesslogik sollte von der
Darstellungslogik getrennt werden. Ob du beides ins Template
packst, oder beides ins Script, ist auch schon egal, weil es dann
eben *nicht getrennt* ist.

Der View bekommt die Daten, zB einen Iterator, ein Objekt oder
sonstiges, und arbeitet damit. Das geht den Controller bzw. das
Script überhaupt nichts an, und es sollte sich darum auch nicht
kümmern.

Stell dir eine Seite vor, die eine Navigationsleiste hat mit dem
Punkt "Login." Jetzt möchtest du, dass wenn der Benutzer
eingeloggt ist, dort "Profil" und "Ausloggen" steht. Würdest du
das--die Viewlogik--etwa wirklich ins Script--also mitten in die
Businesslogik--packen? Wenn ja, hast du das mit der Trennung
nicht ganz verstanden.

Dein Dogma in allen Ehren, ich habe das selbe, aber bei mir
stimmen die Begriffe.

Mal einzeln:
Quote
"if" ist gehört nicht da ganz klar nicht rein.. bzw. der funktionalität her, könnte man es lassen. aber mit dem vermerk "nur für notfälle"


if gehört auf alle Fälle rein. Genauso wie sämtliche Utility
Funktionen die das Template braucht. Sei das Link-Erstellung,
Encoding von HTML-Entities, Form-Erzeugung, Macros etc.


Quote
Es wäre auch dumm das Rad 2 mal zu erfinden. In Perl gibt's bereits if.. usw. dazu braucht man das nichts template einzubauen das verwirrt nur und ist unsauber da man programmierung und darstellung trennen sollte.


Das macht die ganze Welt schon seit Jahren so. Ohne eine
saubere Trennung zwischen Business/View/Model/etc. wären
Arbeiten in einer bestimmten Größenordnung um einiges
aufwendiger, als sie dank mächtigen Template Engines sind.
Wenn du das "verwirrend" findest, naja, ich kenne auch Leute,
die map {} verwirrt. Und wieder machst du den Fehler, dass du
vergisst, dass es um Logik geht, nicht darum, wie es aussieht.

Also nochmal:
- Die Businesslogik ist die eigentliche Verwaltung der Information.
Die "Kernkompetenz" der Anwendung sozusagen.
- Die Viewlogik (Darstellungslogik) beschäftigt sich damit dem
Anwender ein Interface bereitzustellen. Darunter fallen HTML
Seiten, AJAX, XMLRPC (ein anderes Script als Anwender) usw.
usf.

Quote
Zudem hat das template-If viel weniger möglichkeiten..


Es hat die Möglichkeiten, die es braucht. Was ist außerdem "das
Template-If"? Es gibt haufenweise Template Engines mit
verschiedenen Konstrukten. Ich würde, wenn ich es mir genau
überlege, sogar sagen, dass das Fehlen von ausreichender
Funktionalität negativ beeinflußt. Ich meine, dann fangen die
Leute vielleicht noch an abwechselnde CSS Klassen für tr's in die
Businesslogik einzubinden...

Danke, solche Systeme habe ich schon zur Genüge warten
müssen, die werde ich sicherlich nicht selber schreiben, wenn es
bessere Wege gibt.

Quote
Grundsätzlich ist bei einem guten System programmierlogik, ablauf nicht ins template implementiert.


Bitte bring deine Begriffsdefinitionen in Ordnung, das streitet hier
auch keiner ab. Allerdings gehört Viewlogik genausowenig in die
Businesslogik.

Quote
den rest sollte man den richtigen Programmiersprachen überlassen...


Hast du außer "Das ist so und Ruhe!"-Totschlagargumenten noch
ernstzunehmende? Ansonsten, das kann ich auch: Templatelogik
ins Template! Nieder mit Viewlogik im Controller! Om Mani Padme
Hum! ...

Quote
Sauberer Stil ist:


Nichts wovon du Ahnung zu haben scheinst, was ungefähr
konform geht mit deiner Kenntnis der tatsächlichen Größe deines
Egos.


p

PS: Ich gehe jetzt nicht auf alle Punkte ein, da 70% davon eh
nur der Versuch ist, es durch Wiederholungen wahrer zu machen.
Antworten mit Zitat
Strat
 2006-05-11 19:48
#7510 #7510
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
das mit dem bild sehe ich anders; das ist ja ein layout-thema, ob da bilder angezeigt werden sollen oder nicht, also sollte auch der designer da unterscheidungen treffen.
wenn du schreibst:
Code: (dl )
1
2
3
4
5
6
if ($set->{showImages}) {
$template->param(bild => '<img src=... alt=.../>');
}
else {
$template->param(bild => 'bild');
} #else

dann hast du wieder html in deinem perl-code, auf den der designer keinen einfluss hat.

Bei mir ist es haeufig so, dass solche Infos direkt aus einer Datenbank kommen, z.B.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub FetchUserInfo {
my ($dbh, $key, $userId) = @_;
my $sql = "SELECT " . join(", ", @wantedColumns) . " FROM users WHERE $key=?~;
....
my $dataHRef = $sth->fetchrow_hashref();
...
return $dataHRef;
}
my $userInfo = &FetchUserInfo($dbh, id => $userId);
$template->param(
%GlobalConfig,
%LocalConfig,
%$dataHRef);

dann braucht der Code gar nicht zu wissen, was fuer spalten in der DB/im Template vorkommen (oder hoechstens in einer Konfigurationsvariable, die auch der Designer setzen kann), sondern kann die einfach durchreichen, und das ganze wird wesentlich flexibler und der Perl-Code i.d.R. schoen knapp

Nebenbei: wenn du Javascript ueber ein Template ausgeben laesst, in dem ein if vorkommt, ersetzt du diese if dann auch durch eins in Perl?\n\n

<!--EDIT|Strat|1147362828-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Antworten mit Zitat
Gast Gast
 2006-05-11 19:50
#7511 #7511
Nachtrag: Die Tatsache, dass du in deinen Beispielen HTML Code im Script hast, akzeptiere ich einfach mal als Untermauerung meines Standpunktes.

Dankeschön. :)
Antworten mit Zitat
Gast Gast
 2006-05-11 19:54
#7512 #7512
Strat:

Quote
das mit dem bild sehe ich anders; das ist ja ein layout-thema, ob da bilder angezeigt werden sollen oder nicht, also sollte auch der designer da unterscheidungen treffen.


Guter Punkt! Das bringt mich zu einem hübschen Beispiel:

Ich mache eine Abfrage an die Datenbank um einen Report zu erstsellen. Den Iterator gebe ich dem View. Der iteriert drüber, trifft seine Layout/View Entscheidungen, und präsentiert das HTML. Wenn jetzt jemand kommt, und möchte, dass ich das ebenso als PDF hergebe, klemme ich einfach einen PDF View dran, der den Iterator verwendet, um das PDF zu erzeugen. Änderungen an der Businesslogik bzw. dem Script? 0 Byte.

Mach *das* mal mit lauter '<img src="...' in der Businesslogik.
Antworten mit Zitat
renee
 2006-05-11 19:58
#7513 #7513
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zu CPAN:HTML::Template ist vielleicht auch mein Vortrag unter http://perl.renee-baecker.de/HTML_Template.pdf und http://perl.renee-baecker.de/HTML_TemplateII.pdf
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Antworten mit Zitat
master
 2006-05-11 20:02
#7514 #7514
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
@P

Lies meinen Beitrag nochmals durch ich habe ja erklärt das Buisnesslogik und Viewlogik weder im template noch ins Skript gehören.. (strenggenommen)

Es kann sein, das ich nicht alle Begriffe 100% verstehe, es gibt auch wichtigeres als sich um die Begriffe zu streiten.



Quote
Das macht die ganze Welt schon seit Jahren so

Ja und die ganze welt macht auch solchen mist:
<%%>HTML<%%>HTML<%%>

Nur weil es alle so machen, muss es nicht "richtig" sein.

IF = Programmierlogik. hat "Layout" nichts verloren.

ev. verwenden wir beide die templates unterschiedlich.
Für mich dienen sie nur dem Layout, die ganze funktionalität gehört dort nicht rein.

ps. versuch mal dein template in 5 min anzupassen.
da musst du sämtliche IF und ganze template-funktionalität usw. berücksichtigen... darauf "achten" nicht das falsche zu verschieben.

Ich machs mit 1-2 klicks... weil alles korrekterweise ausgelagert ist (soweit es geht) was mit dem Layout nichts zu tun hat.

Es gibt z. B. HTML und Perl dazwischen braucht man keine Zwischenwelt("spezial-template"), die alles verkompliziert.

HTML, Perl
-- Nicht ---
HTML, spezial-super-komplex-templates, Perl

(wo bei mein html ja auch ein template ist, nur html-konform und simpel)

Vielleicht verstehst Du nun meine Sicht der Dinge und deren Leistungsfähigkeit.

IF ist für was aus Programmiersprachen... das gibts schon.... wieso also alles doppelt machen, umständlicher und langsamer?
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
Antworten mit Zitat
Strat
 2006-05-11 20:10
#7515 #7515
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=master,11.05.2006, 18:02]wieso also alles doppelt machen, umständlicher und langsamer?[/quote]
du kaempfst gegen offene tueren. hier hat keiner empfohlen, doppelte ifs zu verwenden.

im gegenteil: man sollte das if verwenden, das passt (und nur genau das)

es gibt unterschiedliche if's:
x) manche sind fuer die Programmlogik noetig => ab ins programm
x) manche sind fuer's layout noetig (z.B. optionales anzeigen von bildern oder verschiedenen bloecken je nach userstatus, oder javascript), aber fuers programm selbst voellig irrelevant => ab ins template.\n\n

<!--EDIT|Strat|1147364196-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Antworten mit Zitat
Strat
 2006-05-11 20:14
#7516 #7516
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=master,11.05.2006, 18:02]Es gibt z. B. HTML und Perl dazwischen braucht man keine Zwischenwelt("spezial-template"), die alles verkompliziert.[/quote]
dann verstehe ich nicht, warum du eigentlich templating systeme verwendest. man koennte ja auch ein standard-template verwenden, und in perl mit ein paar if's und regulaeren ausdruecken das template so veraendern, dass es dann passt... oder mit ein paar evals variablen ersetzen...\n\n

<!--EDIT|Strat|1147364146-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Antworten mit Zitat
Gast Gast
 2006-05-11 20:28
#7517 #7517
Quote
Lies meinen Beitrag nochmals durch ich habe ja erklärt das Buisnesslogik und Viewlogik weder im template noch ins Skript gehören..


Du könntest es vielleicht auch einfach mal begründen, du hast in
deinen Beiträgen viele Dinge mit recht wenig Zusammenhang
behauptet. Aber gut, ein *letztes Mal* versuche ich es noch.
Vorsicht! Hier kommts!: Es hat einen Grund warum es VIEWlogik
heisst, denn wofür ist denn das Template wohl da?

Und meine Anwendungen haben im Controller sehr wohl die
Businesslogik. Wo sollte die denn sonst hin?

Quote
Es kann sein, das ich nicht alle Begriffe 100% verstehe, es gibt auch wichtigeres als sich um die Begriffe zu streiten.


Ich streite mich nicht. Ich habe festgestellt, dass du einerseits
Probleme mit den Begriffen hast, anderen aber zu erklären
versuchst, wie sie sie zu verstehen haben.

Quote
Ja und die ganze welt macht auch solchen mist:
<%%>HTML<%%>HTML<%%>


Was soll das sein? Wenn du meinst, dass sie die VIEWlogik (ich
glaube, ich schreibe das jetzt besser immer groß...) ins Template
schreiben, dann ja, natürlich! Da gehört sie ja hin!

Was ich persönlich um einiges schlimmer finde, ist es HTML ins
Script zu nehmen und dort zu erzeugen, wie du es oben per
Beispiel vorgezeigt hast. Für ein Änderung am Layout, musst du
dafür den Code anfassen. Je nach Entwicklungsflow des
jeweiligen Unternehmens geht deine Anwendung dann ein paar
Tage in die QA, und das nur, weil du bei einem Link einen
Buchstaben korrigiert hast.

Quote
IF = Programmierlogik. hat "Layout" nichts verloren.


Hier haben wir wieder deine verkorksten Begriffe. Was ist
"Programmierlogik"? Alles was einen Ablauf hat? Javascript auch?
Es geht um eine Aufteilung der Zuständigkeitsbereiche, nicht der
angewendeten Techniken. Es geht um "Logik!"

Wie oft muss dies wiederholt werden, bevor du aufhörst einfach
nur mit einem stumpfen "Gehört da nicht rein." zu kontern?

Quote
ps. versuch mal dein template in 5 min anzupassen.


Habe ich, wahrscheinlich schon tausende Male. Versuch in
DEINER Version einem ausgegebenen Link oder Image-Element
eine CSS Klasse zu geben *OHNE* in die Businesslogik rein zu
müssen.

Quote
da musst du sämtliche IF und ganze template-funktionalität usw. berücksichtigen... darauf "achten" nicht das falsche zu verschieben.


Jemand der firm genug in Perl ist um wichtige Seiten zu
schreiben, wird wohl mit etwas HTML und TT keine Probleme
haben.

Aber, falls es dir noch nicht aufgefallen ist: *Genau auf das
gleiche musst du in Perl auch achten!*

Quote
Ich machs mit 1-2 klicks... weil alles korrekterweise ausgelagert ist (soweit es geht) was mit dem Layout nichts zu tun hat.


Halte ich für eine Lüge, wenn du so ...
Code: (dl )
$template->param(BILD => ' <img src="blablubb.gif" alt="bildchen" />');

... arbeitest. Das ist keine Trennung, das ist ein Nudelsalat. Aber
bitte, wie würdest du mit 1-2 Klicks diesem Bild eine CSS-Klasse
geben?

Und warum eigentlich "Klicks"? WYSIWYG Editoren traue ich
sowieso nicht über'n Weg.

Quote
Es gibt z. B. HTML und Perl dazwischen braucht man keine Zwischenwelt("spezial-template"), die alles verkompliziert.


Braucht "man" nicht, soso. Gut, arrogant kann ich's auch:
"Weisst du, wenn du mal was komplizierteres als ein Gästebuch
machen willst, wirst du das anders sehen."

Quote
Vielleicht verstehst Du nun meine Sicht der Dinge


Ja, dass Rechthaben um jeden Preis dir ziemlich wichtig ist,
merkt man an den meisten deiner Beiträge hier.

Quote
IF ist für was aus Programmiersprachen... das gibts schon.... wieso also alles doppelt machen, umständlicher und langsamer?


Weil es weder doppelt, noch umständlich, noch langsamer ist.
Ganz - Im - Gegenteil.

Aber ich rechne eigentlich damit, dass du diese Punkte auch alle
wieder ignorieren wirst.


p
Antworten mit Zitat
<< |< 1 2 3 4 5 6 7 >| >> 61 Einträge, 7 Seiten



View all threads created 2006-05-09 12:24.