Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 19. Februar 2017 12:39

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

[GELÖST] Smarty Variable in php-Dokument aus Template verwenden

Moin,

sicher eine einfach zu lösende Frage, aber wie kann ich eine Smarty Variable in einem .php Dokument verwenden?

line 3 : $savpth = $smarty->get_template_vars('savenewspath');

gibt mir

Call to a member function get_template_vars() on null in line 3. Muss ich irgendwo den Pfad zum Template angeben?
Das Script wird via Ajax ausgeführt.

Ajax.php:

<?php

   $savpth = $smarty->get_template_vars('savenewspath');

  $encodedData=explode(',', $_POST["img"]);
    $data = base64_decode($encodedData[1]);
    $urlUploadImages = $_SERVER['DOCUMENT_ROOT'].'/uploads/'.$savpth;
    $nameImage = "testcrop.png";
    $img = imagecreatefromstring($data);
     if($img) {
        imagepng($img, $urlUploadImages.$nameImage, 0);
        imagedestroy($img); 
        echo "OK";		
    }
    else {
        echo 'ERROR';
    }

?>

Den $savenewspath hab ich im Template via {capture assign="savenewspath"}news/id{$articleid}/{/capture} festgelegt.

Offline

#2 25. Februar 2017 21:04

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.934
Webseite

Re: [GELÖST] Smarty Variable in php-Dokument aus Template verwenden

Hm, warum nimmst du keine Session-Variable? Beim btAdminer übernehme ich die Variabeln per Session:

// Adminer Session
// Need to have cookie visible from parent directory
session_set_cookie_params(0, '/', '', 0);
// Create signon session
$session_name = 'btAdminer';
session_name($session_name);
//session_start();

$host = $config['db_hostname'];
if (isset($config["db_port"]) and $config['db_port'] != '') $host.=':'.$config['db_port'];

// Store there credentials in the session
$_SESSION['ADM_driver'] = 'server';
$_SESSION['ADM_user'] = $config['db_username'];
$_SESSION['pwds'][$_SESSION['ADM_driver']][$host][$config['db_username']] = $config['db_password'];
$_SESSION['ADM_password'] = $config['db_password'];
$_SESSION['ADM_server'] = $host;
$_SESSION['ADM_db'] = $config['db_name'];
$_SESSION['ADM_hideOtherDBs'] = '';
// Get signon uri for redirect
$_SESSION['ADM_SignonURL'] = $config['root_url'].'/modules/btAdminer/btAdminer.php';
$_SESSION['ADM_LogoutURL'] = $config['root_url'].'/'.$config['admin_dir'].'/logout.php';
$_SESSION['ADM_uploadDir'] = $config['uploads_path'];
// Plugins
$_SESSION['ADM_plugin_zipexport'] = $this->GetPreference('zipexport');
$_SESSION['ADM_plugin_xmlexport'] = $this->GetPreference('xmlexport');
$_SESSION['ADM_plugin_foreign'] = $this->GetPreference('foreign');
$_SESSION['ADM_plugin_textarea'] = $this->GetPreference('textarea');
$_SESSION['ADM_plugin_enum'] = $this->GetPreference('enum');
// root_url
$_SESSION['ADM_root_url'] = $config['root_url'];

$sid = session_id();
// Force to set the cookie
setcookie($session_name, $sid, 0, '/', '');
// Close that session
session_write_close();

Für das schreiben der Session-Variable


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 26. Februar 2017 23:31

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Smarty Variable in php-Dokument aus Template verwenden

pWorker schrieb:

wie kann ich eine Smarty Variable in einem .php Dokument verwenden?

line 3 : $savpth = $smarty->get_template_vars('savenewspath');

Punkt 1 - wenn möglich solltest du die native API von Smarty 3 verwenden, und da heisst die Methode getTemplateVars()

http://www.smarty.net/docs/en/api.get.template.vars.tpl

anstatt der Funktion get_template_vars() aus der BC-Klasse.

Punkt 2 - Du musst dir erst Zugriff auf Smarty verschaffen, ist bei CMSMS etwas ungewöhnlich eingebunden.

oder

  $savpth = $template->smarty->getTemplateVars('savenewspath');

Offline

#4 26. Februar 2017 10:47

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

Re: [GELÖST] Smarty Variable in php-Dokument aus Template verwenden

Hey moin ihr Beiden und danke für Eure Hilfe.
Ich hatte jetzt einfach den savepath mitgepostet und den als $_POST["savepath"] verwendet. Eines verstehe ich nicht, kann ich in jedem php Dokument auf ALLE Variablen aller Templates zugreifen? Unabhängig ob die lokal oder global, in foreach-Schleifen ind voneinenader verschiedenen Dokumenten oder sonstwo generiert werden?

Zur Session Variable, was ist das genau?

Schönen Sonntag noch

Offline

#5 26. Februar 2017 12:53

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Smarty Variable in php-Dokument aus Template verwenden

pWorker schrieb:

den als $_POST["savepath"] verwendet.

... was du nicht tun solltest, da auch die $_POST Variablen manipulierbar sind. Immer filtern wink.

pWorker schrieb:

Eines verstehe ich nicht, kann ich in jedem php Dokument auf ALLE Variablen aller Templates zugreifen? Unabhängig ob die lokal oder global

Du musst Variablen als global deklarieren, dann kannst du es

http://www.smarty.net/docs/en/language. … scopes.tpl

Also z.Bsp

{assign var=foo value="bar" scope="global"}

http://www.smarty.net/docs/en/language. … assign.tpl

pWorker schrieb:

Zur Session Variable, was ist das genau?

https://secure.php.net/manual/de/reserv … ession.php

Smarty kennt einen Großteil der Server-Variablen und kann dadurch auch relativ einfach darauf zugreifen via

oder

{$smarty.server.session.savepath}

Offline