Page 1 of 1

Array return naar andere user-defined tag

Posted: Thu Dec 08, 2016 10:05 am
by luckie12
Hey!

Ik moet voor een website een domain checker maken. Nu heb ik via file_get_contents ervoor gezorgd dat ik het gewenste resultaat terugkrijg.
Ik heb er een return bij gedaan, deze is een Array. Hoe kan ik deze return vast zetten aan een andere User-Defined Tag? Zodat ik alleen maar bijvoorbeeld: {available} hoef te gebruiken in mijn HTML?

Dit is mijn stukje code dat in een UDT staat:

Code: Select all

<?php
$domain = $_POST['inputDom'];
$domain1 = explode( '.', $domain );

$dom = $domain1[0];
$ext = $domain1[1];
$doms= array();

$tld = array("nl","be","de","com");

foreach ($tld as $tdl1){
$result = file_get_contents('http://www.flaxetest.eu/Check_Domain.php?domain='.$dom.'&tld='.$tdl1.'');
$decoded = json_decode($result, true);
$doms[] = $decoded['Available'];
}


return $doms;



?>
Bedankt alvast!

~Luc

Re: Array return naar andere user-defined tag

Posted: Thu Dec 08, 2016 10:18 am
by Rolf
Goedemorgen!

In een UDT hoef je geen

Code: Select all

<?php
?>
te gebruiken

Re: Array return naar andere user-defined tag

Posted: Thu Dec 08, 2016 10:23 am
by luckie12
Rolf wrote:Goedemorgen!

In een UDT hoef je geen

Code: Select all

<?php
?>
te gebruiken
Goedemorgen!

En klopt, ik had deze direct van mijn editor gekopieerd inplaats van in CMSMS te plaatsen haha :)

Maar kan dat wat hierboven staat? Of is dat niet duidelijk genoeg?

Re: Array return naar andere user-defined tag

Posted: Thu Dec 08, 2016 10:59 am
by velden
Het is niet helemaal duidelijk maar waarschijnlijk kan het wel.

Wellicht kun je beter een array opbouwen die je daarna in je pagina met smarty kunt gebruiken.

Je kunt de variabele 'terug geven' aan Smarty:

Code: Select all

$smarty->assign('DomCheckResult',$doms);
return laat je dan achterwege.

Waarschijnlijk wil je je array opbouwen met meer informatie. Lijkt me verstandig de tld ook erin op te nemen.

Bovendien kun je gebruik maken van de $params array om parameters aan de UDT mee te geven.

Simpel voorbeeld (niet getest):

Code: Select all

$domain = $params['domain'];
$assign = isset($params['assign'])?$params['assign']:false;
...
if ($assign) {
  $smarty->assign($assign,$doms);
} else {
  return $doms;
}
Aanroep:

Code: Select all

{naamvUDT domain=example.com assign=DomCheckResult}
of
{naamvUDT domain=$smarty.post.inputDom assign=DomCheckResult}

Re: Array return naar andere user-defined tag

Posted: Thu Dec 08, 2016 12:09 pm
by luckie12
Ik heb het nu zo :
Dit is in mijn Template

Code: Select all

   {$smarty.post.inputDom assign="inputDom"}
   {$tld = ['nl', 'be', 'de', 'com']}
   {foreach $tld item=ext}



     {get_check domain=$inputDom tld=$ext}

     {if $return.Available == 'No'}
     <p>Not Available</p>
     {else}
     <p>Available</p>
     {/if}

     <p>Domainis: {$return.Domain}</p>
     <p>Tldis: {$return.Tld}</p>
     <p>Availableis: {$return.Available}</p>
     <p>Priceis: {$return.Price}</p>
     <hr>

   {/foreach}
Dit werkt ook perfect :D
behalve de IF statement erin werkt niet... hij blijft Available zeggen, terwijl er niet beschikbare tussenzitten.

Wat doe ik hier precies fout in de statement?

Re: Array return naar andere user-defined tag

Posted: Thu Dec 08, 2016 3:32 pm
by velden
Dat is niet te zeggen zonder de UDT te zien. Maar wat is $return ?

En als je wilt zien wat er in $return zit zou je {$return|print_r} kunnen gebruiken.