here's a workaround:
$decorators = $this->getElement('delete')->getDecorators();
$td = $decorators['td'];
$td->setOption('colspan', '3');
So you get all decorators, since that is not buggy, extract the one you
need and set the options you need.
So getDecorator() can be rewritten to do this then... for now.
Bart
Bart McLeod schreef:
In addition to this, I just tried to break a few more elements. Their
is a checkbox in my table. If I call:
$this->getElement('in_mainmenu')->getDecorator('td')->setOption('colspan',2);
Then the td is appended as a whole, an no longer wrapped! The colspan
attrib is right there:
<td valign="top" colspan="2"></td>
<input type="hidden" name="in_mainmenu" value="0"><input
type="checkbox" name="in_mainmenu" id="in_mainmenu" value="1">
but the closing td should wrap!
If I do not set the colspan attrib, I get what it should be and what
it was like before I updated from svn:
<td valign="top"><label for="in_mainmenu" class="optional">in
navigatie</label>
<div>
<input type="hidden" name="in_mainmenu" value="0"><input
type="checkbox" name="in_mainmenu" id="in_mainmenu" value="1"></div></td>
You can see here that the td also moved passed label and div towards
the checkbox (in the first HTML sample)! Note that I do not re-ad the
decorator to the stack, I just call upon its reference to set an option.
Any help appreciated. I start to think this is a bug and I will revert
to the old element.php
Regards,
Bart McLeod
Bart McLeod schreef:
Hi all, and Matthew in particular,
First of all, sorry to bother you all if I missed some earlier
messages about this. It's just I am at a deadline and need quick
insight.
I use pretty complex forms using table decorators, rows, td's an so
on. Tables shouldn't be used for formatting, I know, and I don't
really care: they'r useful.
To manage al this complexitity I used a fairly simple set of rules,
that can be handed over to a formbuilder, which then builds the form
based on those rules.
What the builder does is put al elements with all they decorators in
a table cell, group those in a row and group all rows in a table.
In some cases, a row contains more cells than another and I use the
colspan attribute to fill the gap.
I had this working until I upgraded 5 minutes ago from svn.
Now what changed, is that if I want to set an option on a decorator,
say I want to set the option colspan=2 on the last table cell, the
decorators just break... For example, openOnly does not work anymore,
although it is being set along with other settings that do work.
I believe something changed in the way elementDecorators are applied.
If I set an option after applying elementDecorators, the order of the
decorators seems to change. If I just leave the decorators in place
and change none of their options everything is fine, but if I pull
them out and set an option, they get a different position in the
rendering chain. At least, that is what it looks like to me.
Anyone knows what may have caused this? Know a workaround, fix, other
approach that does work?
Regards,
Bart McLeod