Thanks Matthew,

I think I just figured that out myself!

Regards, TJ.



On Thu, Jul 17, 2008 at 8:21 PM, Matthew Weier O'Phinney <[EMAIL PROTECTED]>
wrote:

> -- Codiac <[EMAIL PROTECTED]> wrote
> (on Thursday, 17 July 2008, 10:39 AM -0700):
> > I have to retract my previous mail, stating the issue is resolved. I've
> > double checked and there's definitely something strange going on with
> adding
> > filters to elements using Zend_Config_Xml. Not sure what it is (probably
> me
> > again), so i need help.
> >
> > I played around with setting different (very wrong) options for the
> > StripTags filter, so now I have the following in my config file:
>
> Here's a simple XML config file I used:
>
>    <?xml version="1.0"?>
>    <configdata>
>        <form>
>            <elements>
>                <keywords>
>                    <type>text</type>
>                    <options>
>                        <name>keywords</name>
>                        <label>Keywords</label>
>                        <filters>
>                            <stripTags>
>                                 <filter>StripTags</filter>
>                                <options>
>                                    <tagsAllowed>
>                                         <tag><![CDATA[<a>]]></tag>
>                                         <tag><![CDATA[<p>]]></tag>
>                                    </tagsAllowed>
>
>  <attributesAllowed>class</attributesAllowed>
>                                    <commentsAllowed>1</commentsAllowed>
>                                </options>
>                            </stripTags>
>                        </filters>
>                    </options>
>                </keywords>
>            </elements>
>        </form>
>    </configdata>
>
> I then did the following script:
>
>    $config = new Zend_Config_Xml(dirname(__FILE__) . '/form.xml', 'form');
>    $form = new Zend_Form($config);
>    $filters = $form->keywords->getFilters();
>    var_export($filters);
>
> and I get the following output:
>
>    array (
>    'Zend_Filter_StripTags' =>
>    Zend_Filter_StripTags::__set_state(array(
>        'commentsAllowed' => true,
>        '_tagsAllowed' =>
>        array (
>        'tag' =>
>        array (
>            '<a>' => NULL,
>            '<p>' => NULL,
>        ),
>        ),
>        '_attributesAllowed' =>
>        array (
>        'class' => NULL,
>        ),
>    )),
>    )
>
> As you can see, the filter is being correctly setup.
>
> One thing to note when using configuration: the options you pass are
> passed IN ORDER to the constructor of the filter -- you can't skip
> options, nor can you pass them out-of-order -- which is why the below
> config does not work. It's missing the first argument (corresponding to
> 'tagsAllowed'), and it's got commentsAllowed and attributesAllowed in
> the wrong order.
>
>
> > <filters>
> >             <striptags>
> >                             <filter>StripTags</filter>
> >                             <options>
> >                                 <commentsAllowed>
> >                                     <tag><![CDATA[<p>]]></tag>
> >                                 </commentsAllowed>
> >                                 <attibutesAllowed>
> >                                     <attrib>class</attrib>
> >                                 </attibutesAllowed>
> >                             </options>
> >                         </striptags>
> >                     </filters>
> >
> > I used $form->getElement('body')->getFilter('StripTags')  to get the
> filter
> > from the element and used a simple print_r to check how it was setup:
> >
> > Zend_Filter_StripTags Object([commentsAllowed] =>
> [_tagsAllowed:protected]
> > => Array([<p> => Array())
> > [_attributesAllowed:protected] => Array([class] => ))
> >
> >
> > ???
> >
> > When I use the following config of options:
> >
> >
> > <filters>
> >                         <striptags>
> >                             <filter>StripTags</filter>
> >                             <options>
> >                                 <tagsAllowed>
> >                                     <tag><![CDATA[<p>]]></tag>
> >                                 </tagsAllowed>
> >                                 <commentsAllowed>
> >                                     <![CDATA[<p>]]>
> >                                 </commentsAllowed>
> >                                 <attibutesAllowed>
> >                                     <attrib>class</attrib>
> >                                 </attibutesAllowed>
> >                             </options>
> >                         </striptags>
> >                     </filters>
> >
> > I get:
> >
> > Zend_Filter_StripTags Object([commentsAllowed] => 1
> [_tagsAllowed:protected]
> > => Array([tag] => Array([<p>] => ))
> >
> >     [_attributesAllowed:protected] => Array([<p>] => ))
> >
> > What the !@&$????
> >
> > Questions:
> > Do I need to add all options in the config file for a filter? Is there a
> > particular order in which to add those options?
> >
> > No matter which order I use for setting the options....they simple don't
> get
> > set properly! Does it have anything to do with the following code in
> > Zend_Form_Element::_loadFilter?
> >
> >  if (empty($filter['options'])) {
> >             $instance = new $name;
> >         } else {
> >             $r = new ReflectionClass($name);
> >             if ($r->hasMethod('__construct')) {
> >                 $instance = $r->newInstanceArgs((array)
> $filter['options']);
> >             } else {
> >                 $instance = $r->newInstance();
> >             }
> >         }
>
> --
> Matthew Weier O'Phinney
> Software Architect       | [EMAIL PROTECTED]
> Zend Framework           | http://framework.zend.com/
>

Reply via email to