Sorry for the alarming title, but I think there is definitely something a little odd going on here. I think the form helper is trying to look up object details when it shouldn't. Here is the setup.
My controller fetches 'parts_orders' table and creates an array called $this->parts_orders. The simple array looks like this:
Array
( [0] => Array
( [id] => 40
[TxnLineID] =>
<snip other fields>
)
[1] => Array
( [id] => 48
[TxnLineID] =>
<snip other fields>
) )
Here is a simplified cutout of my view:
{loop parts_orders}
<?php echo $form_helper->hidden_field('parts_orders',$i.'__id',array('value' => @$parts_order['id'] )); ?>
<?php // echo $form_helper->hidden_field('parts_orders',$i.'__TxnLineID',array('value' => @$parts_order['TxnLineID'] )); ?>
// lots of other hidden fields and stuff
{end}
Here's the odd behavior. The page runs fine as shown above, But as soon as I uncomment the 2nd line, the page 'crashes' with this error:
Call to a member function get() on a non-object in /home/sambaserve/web/akelos/lib/AkActionView/helpers/form_helper.php on line 468
First off, why is it calling object->get()? 'parts_order' is NOT an object in this case, but a simple array, thus we should not be treating it as an object.
Secondly, why is it crashing on the 2nd line at all? That field is a perfectly valid array key, just like the ['id'] above it, but yet ['TxnLineID'] crashes the script.
Thirdly, if I enter an INVALID key name (like 'booger' or 'yahoo') instead of 'id' or 'TxnLineID', I get the same error. I'm not sure if this is related but they do look like close cousins. Shouldn't the @ symbol cause PHP to ignore any errors that particular variable creates?
Can someone shed some light on this subject? I'm a little confused. (like normal)
Thanks!
I think the FormHelpers only take objects. That's what it says in the API docs.
I guess you’ll have to use a FormTagHelper in this case.
It's the inconsistent behavior that I'm worried about. It tries to call $parts_orders->get('TxnLineID') and fails, but why dosen't it tell me that I can't do ->get('id') or ->get('Quantity), or any of the other keys that I use?
Why does it fail on only TxnLineID? That's my main concern. Also, if the 2nd argument in hidden_field() is supposed to be the name of the column, then every single one of my lines should produce the error. No columns have names like '1__id' or '1__Quantity' or '2__id' or '2__Quantity', but yet, they all work fine except for '$i__TxnLineID'. I'll dig a bit deeper when I get the chance.
1 to 3 of 3