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

#1 19. Februar 2017 12:39

pWorker
probiert CMSMS aus
Registriert: 20. Oktober 2016
Beiträge: 80

Re:

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: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

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, Revisions

Offline

#3 26. Februar 2017 23:31

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

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.

  $smarty = $template->smarty;

oder

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

1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#4 26. Februar 2017 10:47

pWorker
probiert CMSMS aus
Registriert: 20. Oktober 2016
Beiträge: 80

Re:

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

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

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

{$smarty.server.post.savepath}

oder

{$smarty.server.session.savepath}

1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

Fußzeile des Forums

Powered by FluxBB