UDT probleem.

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
Rinker
Forum Members
Forum Members
Posts: 65
Joined: Fri May 27, 2011 9:37 am

UDT probleem.

Post by Rinker »

In navolging van mijn vorige probleem heb ik nu een probleem met een UDT.
Deze udt roep ik in mijn template aan met:

Code: Select all

{gallery_album album_name="{image->gallery_url}"}
Mijn (test) udt is:

Code: Select all

if ( isset($params['album_name']) ) {

echo $params['album_name']."<br>"; //test de url

$re = '/(?:\?|\&)(?<key>[\w-]+)(?:\=?|)(?<value>[\w.]+)?/';
$str = $params['album_name'];
$count = preg_match_all($re, $str, $matches,  PREG_SET_ORDER);
echo "matches found = " . $count . "<br>";
var_dump($matches);

foreach ($matches as $val) {
    echo "matched: " . $val[0] . "<br>";
    echo "(1)    key: " . $val['key'] ."<br>";
    echo "(2) Value: " . $val['value'] . "<br><br>";
    }


} //end
Uitkomst:

Code: Select all

http:///www.mijnsite.nl/index.php?mact=Gallery,mdcd5d,default,1&mdcd5ddir=Fotografie%2F&mdcd5dreturnid=1&page=1
matches found = 4
array (size=4)
  0 => 
    array (size=5)
      0 => string '?mact=Gallery' (length=13)
      'key' => string 'mact' (length=4)
      1 => string 'mact' (length=4)
      'value' => string 'Gallery' (length=7)
      2 => string 'Gallery' (length=7)
  1 => 
    array (size=3)
      0 => string '&amp' (length=4)
      'key' => string 'amp' (length=3)
      1 => string 'amp' (length=3)
  2 => 
    array (size=3)
      0 => string '&amp' (length=4)
      'key' => string 'amp' (length=3)
      1 => string 'amp' (length=3)
  3 => 
    array (size=3)
      0 => string '&amp' (length=4)
      'key' => string 'amp' (length=3)
      1 => string 'amp' (length=3)

matched: ?mact=Gallery
(1) key: mact
(2) Value: Gallery

matched: &
(1) key: amp
(2) Value: 

matched: &
enz.... ook notices vanwege geen 'value'key....
Niet goed dus, de url wordt goed doorgegeven maar de uitkomst is niet correct.
Als ik nu het volgende veranderd werkt het perfect:

Code: Select all

$str = 'http:///www.mijnsite.nl/index.php?mact=Gallery,mdcd5d,default,1&mdcd5ddir=Fotografie%2F&mdcd5dreturnid=1&page=1';
Uitkomst:

Code: Select all

http:///www.mijnsite.nl/index.php?mact=Gallery,mdcd5d,default,1&mdcd5ddir=Fotografie%2F&mdcd5dreturnid=1&page=1
matches found = 4

array (size=4)
  0 => 
    array (size=5)
      0 => string '?mact=Gallery' (length=13)
      'key' => string 'mact' (length=4)
      1 => string 'mact' (length=4)
      'value' => string 'Gallery' (length=7)
      2 => string 'Gallery' (length=7)
  1 => 
    array (size=5)
      0 => string '&mdcd5ddir=Fotografie' (length=21)
      'key' => string 'mdcd5ddir' (length=9)
      1 => string 'mdcd5ddir' (length=9)
      'value' => string 'Fotografie' (length=10)
      2 => string 'Fotografie' (length=10)
  2 => 
    array (size=5)
      0 => string '&mdcd5dreturnid=1' (length=17)
      'key' => string 'mdcd5dreturnid' (length=14)
      1 => string 'mdcd5dreturnid' (length=14)
      'value' => string '1' (length=1)
      2 => string '1' (length=1)
  3 => 
    array (size=5)
      0 => string '&page=1' (length=7)
      'key' => string 'page' (length=4)
      1 => string 'page' (length=4)
      'value' => string '1' (length=1)
      2 => string '1' (length=1)

matched: ?mact=Gallery
(1) key: mact
(2) Value: Gallery

matched: &mdcd5ddir=Fotografie
(1) key: mdcd5ddir
(2) Value: Fotografie

matched: &mdcd5dreturnid=1
(1) key: mdcd5dreturnid
(2) Value: 1

matched: &page=1
(1) key: page
(2) Value: 1
Dit is zoals het moet zijn!
Alleen de url is steeds verschillend dus die moet worden doorgegeven zoals in eerste voorbeeld maar dan werkt het niet?
Ook als ik de 'params['album_name']' direct in preg_match zet werkt het ook niet.

Doe ik nu iets stoms of zie ik wat over het hoofd??
Iemand enig idee?

bvd.
User avatar
Rolf
Power Poster
Power Poster
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Contact:

Re: UDT probleem.

Post by Rolf »

{gallery_album album_name="{image->gallery_url}"}
Uhm, dit kan niet. Klopt deze code met jouw site of zit er hier op het forum in typo in...
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
deactivated010521

Re: UDT probleem.

Post by deactivated010521 »

Je hebt drie slashes "http:///' in het protocol van je url staan. In plaats van Regular Expressions kan je beter de "parse_*" PHP functies gebruiken. Zijn veel makkelijker te lezen en te begrijpen:

Code: Select all


$url = "http://example.com?mact=MyModule,id,action&page=1&title=Groovy";

// http://php.net/manual/en/function.parse-url.php
$query = parse_url($url, PHP_URL_QUERY);
print "$query \n";

// http://php.net/manual/en/function.parse-str.php
parse_str($query, $queryList);
print_r($queryList)

// $smarty->assign('querryList', $queryList);
Rinker
Forum Members
Forum Members
Posts: 65
Joined: Fri May 27, 2011 9:37 am

Re: UDT probleem.

Post by Rinker »

@Rolf:
Zit inderdaad een typo in, moet zijn '$image->gallery_url' :)

@ arnoud:
Drie slashes is ook een typo, maar moet niet uitmaken voor de preg_match_all functie.

Ik zal eens kijken naar die parse functies, lijkt erop dat ik het daar ook mee red, bedankt.

Rest mij nog wel de vraag waarom het niet werkt, dat zou ik toch wel graag willen weten.
Als ik de string in de udt zelf zet werkt het perfect maar als ik hem doorgeef als parameter werkt het niet terwijl hij wel netjes wordt geprint???
Rinker
Forum Members
Forum Members
Posts: 65
Joined: Fri May 27, 2011 9:37 am

Re: UDT probleem.

Post by Rinker »

Ben net nog wat aan het testen geweest en betreft het ( volgens mij ) een scope probleem.

Als ik in het template de gallery_url eerst aan een eigen variable toekent dan gaat het wel goed, bv.:

Code: Select all

{$album_url = $image->gallery_url}
{gallery_album album_name=$album_url}
Dit werkt perfect, dus opgelost! ;D
Nog bedankt voor het meedenken.
Rinker
Forum Members
Forum Members
Posts: 65
Joined: Fri May 27, 2011 9:37 am

Re: UDT probleem.

Post by Rinker »

Sorry heren, de oplossing die ik dacht te hebben werkt ook niet.
Ik haalde twee udt's door elkaar..... ::)

Zal toch die php parse functies moeten gebruiken.

Mocht er nog iemand ideeën hebben zijn ze altijd welkom, ik wil toch graag weten waarom dit niet werkt, mocht ik er zelf nog achter komen dan laat ik dat ook weten natuurlijk, dit euvel laat me niet los :D
Post Reply

Return to “Dutch - Nederlands”