#1199: AgaviValidator sets dependencies per argument base
-----------------------------------------+----------------------------------
 Reporter:  sven.kretschm...@…           |       Owner:  dominik             
     Type:  enhancement                  |      Status:  new                 
 Priority:  normal                       |   Milestone:  1.0.3               
Component:  validation                   |     Version:  1.0.1               
 Severity:  normal                       |    Keywords:  validator dependency
Has_patch:  0                            |  
-----------------------------------------+----------------------------------

Comment(by sven.kretschm...@…):

 Hi David,

 here are the code samples. I posted both versions of the validation
 configuration (one working without using a base and one using a base).

 Affected files:

  * SearchAction (search in normal mode, more simple in slot mode
  * SearchInputView (display the input field and settings for the search)
  * SearchSlotView (display only the input field in the marginal column)
  * SearchSuccessView (display the search results)
  * Search.xml (validation config)

 SearchAction:
 {{{
     public function registerValidators()
     {
         $container_parameters = array(
             'is_slot' =>
 (bool)$this->getContainer()->getParameter('is_slot', false)
         );

 $this->getContainer()->getRequestData()->setParameter('__container',
 $container_parameters);
     }
 }}}

 Search.xml (current, working, without base)
 {{{
 <validator class="equals" required="false"
 provides="container.is_no_slot">
     <arguments>
         <argument>__container[is_slot]</argument>
     </arguments>
     <errors>
         <error>Invalid is_slot part given.</error>
     </errors>
     <ae:parameters>
         <ae:parameter name="severity">silent</ae:parameter>
         <ae:parameter name="value">false</ae:parameter>
     </ae:parameters>
 </validator>

 <validator class="equals" required="false" provides="container.is_slot">
     <arguments>
         <argument>__container[is_slot]</argument>
     </arguments>
     <errors>
         <error>Invalid is_slot part given.</error>
     </errors>
     <ae:parameters>
         <ae:parameter name="severity">silent</ae:parameter>
         <ae:parameter name="value">true</ae:parameter>
     </ae:parameters>
 </validator>

 <validator class="number" name="invalid_limit" required="false"
 depends="container.is_no_slot">
     <arguments>
         <argument>limit</argument>
     </arguments>
     <errors>
         <error for="min">The limit must be a positive integer.</error>
         <error for="type">The limit must be numeric.</error>
     </errors>
     <ae:parameters>
         <ae:parameter name="min">1</ae:parameter>
         <ae:parameter name="type">integer</ae:parameter>
     </ae:parameters>
 </validator>
 }}}

 Search.xml (enhanced, does not work)
 {{{
 <validator class="equals" required="false"
 provides="container.is_no_slot">
     <arguments base="__container">
         <argument>is_slot</argument>
     </arguments>
     <errors>
         <error>Invalid is_slot part given.</error>
     </errors>
     <ae:parameters>
         <ae:parameter name="severity">silent</ae:parameter>
         <ae:parameter name="value">false</ae:parameter>
     </ae:parameters>
 </validator>

 <validator class="equals" required="false" provides="container.is_slot">
     <arguments base="__container">
         <argument>is_slot</argument>
     </arguments>
     <errors>
         <error>Invalid is_slot part given.</error>
     </errors>
     <ae:parameters>
         <ae:parameter name="severity">silent</ae:parameter>
         <ae:parameter name="value">true</ae:parameter>
     </ae:parameters>
 </validator>

 <validator class="number" name="invalid_limit" required="false"
 depends="container.is_no_slot">
     <arguments>
         <argument>limit</argument>
     </arguments>
     <errors>
         <error for="min">The limit must be a positive integer.</error>
         <error for="type">The limit must be numeric.</error>
     </errors>
     <ae:parameters>
         <ae:parameter name="min">1</ae:parameter>
         <ae:parameter name="type">integer</ae:parameter>
     </ae:parameters>
 </validator>
 }}}

-- 
Ticket URL: <http://trac.agavi.org/ticket/1199#comment:2>
Agavi <http://www.agavi.org/>
An MVC Framework for PHP5



_______________________________________________
Agavi Tickets Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/tickets

Reply via email to