List Info

Thread: Using arrays as input to plugins




Using arrays as input to plugins
user name
2006-04-26 16:23:43
Hello-

I have noticed some odd stuff going on with using
associative arrays
and the "." syntax. When I am handing off data
to a plugin, or any
other Smarty plugin (e.g. ), it doesnt handle using
associative arrays.

E.g.

$foobar = array('file' => 'foo.tpl');
$smarty->assign("foobar", $foobar);

---- foo.tpl ---

{include file=$foobar.file}

What happens is that it looks for a variable called
"$foobar", doesnt
find it, so returns the empty string and then just appends
".file"...basically Smarty doesnt "dive
into" the array, as it would
if I just did:

You are looking for {$foobar.file}

In my case I have written a plugin "dispText"
and am trying to call it as such:

{dispText name="Name"
value="$navItem.Name" label=$lblName
readOnly=$navItem.readOnly}

Where $navItem is an associative array I have previously
assigned, and
those key names definitely exist. When my plugin executes it
creates a
form input of type text and then in the value portion just
display
".Name" because it cannot extract that value
from the array $navItem
using the key as I have defined it.

So is there a way I can get it to read the array values
WITHOUT doing
an  first and pulling all of my values out. That
would really
suck. I would think this is a core parser change and hence
its not so
quick and easy.

Thanks
/Cody

-- 
Smarty General Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php

Using arrays as input to plugins
user name
2006-04-27 13:47:59
Cody Caughlan wrote:
> {include file=$foobar.file}
>   
This should work exactly as you would expect it to. I think
what you
actually have a problem with is:

  {include file="$foobar.file"}

.. which is a completely different thing, and is indeed
interpreted as $foobar . '.file'.

Jeroen's comment to read the manual (http://smarty.php.net/manual/en/language.syntax.quotes
.php) is valid if this is what you are trying to do, but
really you should remove the quotes.


> {dispText name="Name"
value="$navItem.Name" label=$lblName
> readOnly=$navItem.readOnly}
>   

Likewise,
    value="$navItem.Name"
is not the same as
    value=$navItem.Name
but is the same as
    value="`$navItem.Name`"

I'm not sure why a lot of PHP coders tend to put quotes
around things
that don't need it (eg mysql_connect("$host",
...)) but it often causes
problems further down the line.

-- 
Mark Rogers
More Solutions Ltd :: 0845 45 89 555

-- 
Smarty General Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )