Re: [SMARTY-DEV] Variable variables
| From: | Martijn van Zal | Date: | Wed, 05 Jun 2002 13:31:35 +0000 |
| Subject: | Re: [SMARTY-DEV] Variable variables | ||
| References: | 1 2 3 | Groups: | php.smarty.dev |
| Request: | Send a blank email to php-smarty-dev+get-112@lists.php.net to get a copy of this message | ||
Hmmm, indeed :))))
I've tried it in an earlier release and got problems, but it works fine now.
but how does smarty know what object to take? I now use {$object->$row.row}
where $row.row is an attribute of $object. But what if $row is the attribute
(hash?) of $object, and 'row' is an index of that hash, would it work too
then? {($object->$row).row} ?
Thanks for your time..
Martijn
> If you mean using $object->$var, it's already possible with Smarty
> 2.1.0.
>
> On Wed, 05 Jun 2002, Martijn van Zal wrote:
> > Hello all...
> >
> > I wonder if there is a way of implementing variable variabes into smart;
> > Sometimes I have an object, and I need a certain attribute from it. I
need
> > this to create forms automatically. I have an array with form elements
> > (name, type) and I include the right template with the form for the
right
> > variable type. ie: a textfield, wysiwyg html editor, image upload box,
> > selectbox
> >
> > So what I do is I run through the form elements array like this
> >
> > ============================
> > {foreach from=$pageVars item=row}
> > <tr height=20>
> > {if (isset($row.editTemplate))}
> > {include file=$row.editTemplate row=$row}
> > {/if}
> > </tr>
> > {foreachelse}
> > ============================
> >
> > And in the editTemplate I do something like this:
> >
> > ============================
> > <td>{$row.name|translate}</td>
> > <td>
> > {if (isset($row.readOnly) && $row.readOnly)}
> > {$object|var:$row.name}
> > {else}
> > <input type="text" name="{$row.name}"
value="{$object|var:$row.name}">
> > {/if}
> > </td>
> > ============================
> >
> > The data to fill the form with comes from the '$object' object. What i
want
> > to do is: $object->$row.name but unfortunally smarty currently doesn't
have
> > this functionality. I solved this by using a modifier named 'var' which
gets
> > the right attribute from the object
> >
> > ============================
> > function smarty_modifier_var($object, $var)
> > {
> > if (is_object($object))
> > return $object->$var;
> > return false;
> > }
> > ============================
> >
> > This works fine, but I don't think this is the correct method, it's more
> > like a hack to get what I want. I tried looking in the source code but
it's
> > too complicated for me. I don't have any Idea if anyone else has the
same
> > problems or if it is hard to change it in the compiler functions.
> >
> > ________________________________________
> > Martijn van Zal GFXartist Network
> > Technical Manager
> >
> > mail: martijn@gfxartist.com
> > icq: 8213621
> >
> >
> > --
> > Smarty Development Mailing List (http://smarty.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>
> -Andrei
> http://www.gravitonic.com/
> * I don't have a solution but I admire the problem. *
>
> --
> Smarty Development Mailing List (http://smarty.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php