Daten übergeben oder überprüfen [kleine Smarty Frage]

  • Hey,


    ich bin dereit dabei einen Blog zu erstellen und es läuft auch soweit ganz gut, allerdings habe ich derzeit ein klines Problem.
    Ich lese ein paar Einstellungsdinge beim Laden der Seite mit PHP in ein Array und ich will dieses nun mit Smarty an eine Funktion weitergeben, das funktioniert auch aber irgendwie scheint bei dieser Übergabe irgendwie etwas nicht zu stimmen. Das Array hat danach seltsamerweise eine Dimension mehr, also hier mal ein Ausschnitt des Codes:


    PHP-Datei, wo die Datei eingelesen wird:

    PHP
    $smarty->assign('$einstellungen', $einst); // $einst ist das array mit den Settings


    Dann die zugehörige TPL-Datei (HTML)

    Code
    {einstellungenHinzufuegen data=$einstellungen}


    Hier soll die Smarty Funktion aufgerufen werden und soweit wie ich das verstanden habe geht das so aber seltsamerweise muss ich dann in der zugehörigen PHP-Datei, wo sich diese Funktion einstellungenHinzufuegen befindet mit $params['data']['einstellung] auf die jeweilige Einstellung zugreifen, vorher hatte das array aber diese Form: $einstellung['einstellung'], hier mal ein Ausschnitt mit print_r

    Code
    Array( [kategorien] => 10 [eintraegeProSeite] => 20 usw. )


    und jetzt, mit ausgabe von print_r

    Code
    Array( [data] => Array( [kategorien] => 10 [eintraegeProSeite] => 20 usw ,,,))


    PHP
    function smarty_function_einstellungenHinzufuegen($params, $smarty) 
    {
    	// $params['data']['einstellung] Zugrifff geht nur so aber ich will das ganze so: $params['data']['einstellung] haben
    }


    Wie kommt das? Mache ich da bei der Übergabe was falsch?



    Ich hätte auch noch eine eher allgemeine Frage zu PHP:
    Ich wollte mich auch demnächst nicht mehr mit smarty beschäftigen, denn irgendwie gefällt mir Smarty auch nicht so 100%.
    Wenn ich jetzt bspw. so ein kleines Menü bastele, wie kann ich bspw. an einer gewissen Stelle im HTML Code dafür sorgen, das dort dieses Menü eingefügt wird? Bei Smarty habe ich das so gemacht:

    PHP
    {if isset($signedIn)}
    {else}
    	<p>Derzeit nicht verf&uuml;gbar. Sie m&uuml;ssen sich erst</p>
    {/if}


    $signedIn war dabei die Session, die ich vorher gesetzt habe, also so:

    PHP
    if(isset($_SESSION['eingeloggt']))
    	$smarty->assign('signedIn', $_SESSION['eingeloggt']);


    aber wie macht man das "nur" mit PHP, das ich dann also irgendwie prüfe, ob die Session da ist oder was auch immer? Dabei natürlich möglichst sauber?
    Noch eine Frage dazu, wenns okay ist:
    Wie kann man eigentlich eine große Menge an Daten von einer PHP Datei zur anderen übergeben?

  • Ich denke smarty packt dein übergebenes Array einfach standartmäßig in das Array und weist ihm den key Data zu, wenn du einfach n simplen String mit reingibst, wird der wahrscheinlich auch unter dem Key data erreichbar sein..

  • Das man so auch in einer HTML Datei bswp. Code einbinden kann ist mir schon klar aber eigentlich sollte man doch Design und Code möglichst weit und gut voneinander trennen oder, oder würde man das auch in der Praxis einfach so machen, das man an Stelle x dann einfach auch mal <?php stehen hat?
    Ein Beispiel hatte ich ja auch oben schon dafür genannt:

    Code
    Wie kann ich also bpsw. in einer HTML Datei überprüfen, ob eine Session existiert, um anstelle x ein Admin Menü oder was weiß ich einzublenden? Das dabei aber natürlich möglichst "sauber"?


    Zu der Sache mit

    Code
    "Wie kann man eigentlich eine große Menge an Daten von einer PHP Datei zur anderen übergeben?"


    Meine ich bspw. Formulardaten: Was mache ich, wenn ich die von einer Seite an eine andere weitergeben will aber dies ohne Submit z.B?


    wolf
    Das gefällt mir an Smarty so bspw. auch schon einmal ganz und gar nicht aber smarty gefällt mir sowieso nicht so ...

  • Zum Trennen von PHP und HTML:
    naja, wenn Du im HTML - OHNE PHP nutzen zu wollen - eine Abfrage brauchst, ob eine Session o.ä. gesetzt ist,
    dann kommst Du um ein CMS (eigenes oder anderes ...) nicht herum.
    Dabei wird ja anhand von PseudoCode - was eigtl nur bestimmte Platzhalter/Keywords darstellt - der Inhalt dort hin replaced/gesetzt/ersetzt.


    Zum Weitergeben:
    SESSIONs (Seite muss min einmal abgefeuert werden um in PHP die SESSIONs zu setzen, ODER per ajax an PHP-Script senden),
    Dateien (ähnlich wie bei SESSIONs),
    LocalStorage (js),
    (Web)Socket (Aufwand/Nutzen sollte passen)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!