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

#1 10. Oktober 2013 14:09

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Problem mit Variablen im Modulaufruf

Moin!

Ich möchte an einen Modulaufruf Variablen übergeben. Das funzt nur teilweise:

{ListIt2 search=$smarty.get.search}

funktioniert problemlos.

Aber

{ListIt2 $smarty.get.searchfield="1"}

(soll {ListIt2 search_myfield="1"} ergeben)

ergibt nen Fehler "Unexpected "$", expected one of: "}

Wie krieg ich das denn da rein?

Servus,
Alex

Offline

#2 10. Oktober 2013 15:24

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

Re: Problem mit Variablen im Modulaufruf

Und dies funzt auch nich?

{ListIt2 {$smarty.get.searchfield}="1"}

Offline

#3 10. Oktober 2013 15:43

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Problem mit Variablen im Modulaufruf

cyberman schrieb:

Und dies funzt auch nich?

{ListIt2 {$smarty.get.searchfield}="1"}

Unexpected "{", expected one of: "}

Servus,
Alex

Offline

#4 11. Oktober 2013 08:31

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: Problem mit Variablen im Modulaufruf

Was ist damit:

{ListIt2 `$smarty.get.searchfield`="1"}

Ich bin mir aber nicht sicher, ob man bei Smarty Variablen als Parameter-Namen verwenden kann.
Wenn nicht, dann musst Du Dir den Aufruf als Text zusammenbasteln und mit {eval} ausführen.
Bsp:

{eval var=$ldelim|cat:"ListIt2 `$smarty.get.searchfield`='1'$rdelim"}

Oder schreib Dir lieber gleich ein Plugin/UDT.
Dann musst Du im Template nur prüfen, ob {$smarty.get.searchfield} vorhanden ist.
Wenn ja, dann Dein UDT ausführen (der dann ListIt ausführt):

{if isset($smarty.get.searchfield)}
    {deinUDT}
{/if}

Als UDT wäre das eine einzige Zeile:

cms_utils::get_module('ListIt2')->DoActionBase('default', 'cntnt01', array($_GET['searchfield'] => 1));

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 11. Oktober 2013 13:47

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Problem mit Variablen im Modulaufruf

NaN schrieb:

Was ist damit:

{ListIt2 `$smarty.get.searchfield`="1"}

Nope ...


NaN schrieb:

Ich bin mir aber nicht sicher, ob man bei Smarty Variablen als Parameter-Namen verwenden kann.
Wenn nicht, dann musst Du Dir den Aufruf als Text zusammenbasteln und mit {eval} ausführen.
Bsp:

{eval var=$ldelim|cat:"ListIt2 `$smarty.get.searchfield`='1'$rdelim"}
{assign var=rdelim value="}"} 
{assign var=ldelim value="{"} 
{eval var=$ldelim|cat:"ListIt2 `$smarty.get.searchfield`='1'$rdelim"}

führt zu Unexpected "}"

NaN schrieb:

Oder schreib Dir lieber gleich ein Plugin/UDT.
Dann musst Du im Template nur prüfen, ob {$smarty.get.searchfield} vorhanden ist.
Wenn ja, dann Dein UDT ausführen (der dann ListIt ausführt):

{if isset($smarty.get.searchfield)}
    {deinUDT}
{/if}

Als UDT wäre das eine einzige Zeile:

cms_utils::get_module('ListIt2')->DoActionBase('default', 'cntnt01', array($_GET['searchfield'] => 1));

Wo finde ich denn Infos zu DoActionBase?


Ich versuch mal zu übersetzen:
- Listit2 Modul instanziieren
- Dem Modul sagen was es machen soll. Gibts da noch was anderes ausser DoActionBase? Wo finde ich die Infos darüber?
- Aktion festlegen 'default', also Ausgabe (vermute ich mal)
- cntnt01 = ???
- ein Array erzeugen mit 1 key/wert Paar welches wohl von dem Modul verarbeitet wird. Da könnte man auch mehrere Paare übergeben?


Andererseits: Mit nem Plugin könnte man sich den Modulaufruf ja bequemst in PHP zurechtpfriemeln. Ist ein Plugin nicht sogar performanter?

Dank dir für deine Hilfe!
Alex

Offline

#6 11. Oktober 2013 14:40

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: Problem mit Variablen im Modulaufruf

Wo finde ich denn Infos zu DoActionBase?

Garnicht. Weil mein Fehler. DoActionBase() ist nicht dokumentiert, weil interne Core-Funktion.
Also nimm lieber DoAction().
http://www.cmsmadesimple.de/forum/viewt … 657#p27657
http://apidoc.cmsmadesimple.org/
Links unter CMSModule -> DoAction().

Ich versuch mal zu übersetzen:
- Listit2 Modul instanziieren

Richtig.

- Dem Modul sagen was es machen soll.

Richtig.

Gibts da noch was anderes ausser DoActionBase? Wo finde ich die Infos darüber?

Da gibt's ein Haufen Funktionen. Stehen alle in der API Doc. Aber DoAction() ist diejenige welche, die eine Modul-Aktion ausführt. Eine andere wirst Du selten brauchen.
Welche Aktion mit DoAction() ausgeführt wird , steht im ersten Parameter:

- Aktion festlegen 'default', also Ausgabe (vermute ich mal)

Richtig. Die Standard Frontend-Aktion des Listit Moduls, die ausgeführt wird, wenn das Modul im Template oder via URL aufgerufen wird. Was es da noch alles für Aktionen gibt, hängt vom Modul ab.

- cntnt01 = ???

Stichwort Modul-ID.

- ein Array erzeugen mit 1 key/wert Paar welches wohl von dem Modul verarbeitet wird. Da könnte man auch mehrere Paare übergeben?

Du übergibst der Funtion DoAction() ein Array. Das sind die Modul-Parameter. Genau wie im Template: parameter_name=>"parameter_wert"
Du kannst da alle Parameter übergeben, die das Modul kennt.

Andererseits: Mit nem Plugin könnte man sich den Modulaufruf ja bequemst in PHP zurechtpfriemeln. Ist ein Plugin nicht sogar performanter?

Ja² wink


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#7 11. Oktober 2013 16:34

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Problem mit Variablen im Modulaufruf

Moin!

Ich möchte Dir hiermit mal ein dickes Lob aussprechen!

Wenn alle Leute (speziell in der englischen community ...) in der Lage wären, so präzise zu antworten wie Du, dann hätten wir viele Probleme nicht.

Ein herzliches Dankeschön für die Erläuterungen!

Servus,
Alex

Offline

#8 11. Oktober 2013 21:21

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: Problem mit Variablen im Modulaufruf

{assign var=rdelim value="}"} 
{assign var=ldelim value="{"} 
{eval var=$ldelim|cat:"ListIt2 `$smarty.get.searchfield`='1'$rdelim"}

führt zu Unexpected "}"

Nur noch kurz zur Ergänzung: Das Assign ist da fehl am Platz. Die beiden Variablen $ldelim und $rdelim sind reservierte Smarty-Variablen. Die brauchst Du nicht zu erstellen. Wenn es dann immer noch nicht geht, dann ginge evtl. noch das hier:

{eval var=$ldelim|cat:"ListIt2 `$smarty.get.searchfield`='1'"|cat:$rdelim}

Ein herzliches Dankeschön für die Erläuterungen!

Immer wieder gerne.
Ist das Problem denn damit jetzt gelöst?


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#9 12. Oktober 2013 14:14

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Problem mit Variablen im Modulaufruf

NaN schrieb:
{assign var=rdelim value="}"} 
{assign var=ldelim value="{"} 
{eval var=$ldelim|cat:"ListIt2 `$smarty.get.searchfield`='1'$rdelim"}

führt zu Unexpected "}"

Nur noch kurz zur Ergänzung: Das Assign ist da fehl am Platz. Die beiden Variablen $ldelim und $rdelim sind reservierte Smarty-Variablen. Die brauchst Du nicht zu erstellen.

Da wird aber nix angezeigt ... der Modulaufruf wird korrekt zusammengesetzt, aber halt ohne die geschweiften Klammern. Deshalb habe ich das mit dem assign probiert ...


Ist das Problem denn damit jetzt gelöst?

Ich bau mir am Montag mal ein Plugin.

Nochmals vielen Dank!
Alex

Offline