Monday, June 27, 2011

Re: Form Conventions

What happens with validation once you have done what I suggested? It ought to change the behaviour...

Jeremy Burns
Class Outfit

http://www.classoutfit.com

On 28 Jun 2011, at 03:47, Sanfly wrote:

In the eternal words of Homer Simpson: 'Doh'

I so should have realised that!

Does anyone have a comment/suggestion on question 2?

Cheers

On Jun 28, 9:05 am, Jeremy Burns | Class Outfit
<jeremybu...@classoutfit.com> wrote:
Q1: The form is doing exactly what you want it to as the $i is inside single speech marks. Try $this->Form('Member.'.$i.'.name', ... then see what happens with validation.

Jeremy Burns
Class Outfit

http://www.classoutfit.com

On 27 Jun 2011, at 20:38, Sanfly wrote:







My question is in two parts

Im making a form that has a certain part of it built with a 'for'
loop.  This form is for a booking:  the first couple of fields are for
the main contact details for the booking, the looped section is to get
the details for each person included in the booking, up to a maximum
of 10 people.

Please note:  at this point the information is not being stored in a
database, just being emailed.

Below is my form as I have it now.  I have removed some fields to
simplify it for this purpose, but once the form is submitted, some
validation is done.

Question 1:

Is there any way that I can use cakePHP to build the looped form
fields?

<?=$this->Form->text('Member.$i.name', array("size" => "40", "label"
=> false));?> does not work within the for loop, the fields end up
with: name="[Member][$i][name]" rather than name="[Member][1][name]"
etc...

Question 2

I want to do the validation and if there are issues, have the form
repopulated with the data (if all okay, will redirect to another
page).  My non-looped fields are repopulated with the data, but not
the looped fields.  What is required to get this to happen?

Hope this all makes sense...

<?=$this->Form->create('booking', array('url' => '/bookings/
bookingform', 'onSubmit' => 'return checkRequiredFields()'));?>
<table width="100%">
   <tr>
           <td align="right"><b>Name: </b></td>
           <td><?=$this->Form->text('Booking.name', array("size" => "40",
"label" => false, "onBlur" => "copyName()"));?> <b style="color:
#FF0000">*</b>       </td>
   </tr>
   <tr>
           <td align="right"><b>Email: </b></td>
           <td><?=$this->Form->text('Booking.email', array("size" => "40",
"label" => false));?> <b style="color: #FF0000">*</b>        </td>
   </tr>
</table>
<br>
<table cellpadding="0">
   <tbody>
       <tr>
           <td width="190"><b>Full Name</b></td>
                   <td width="40"><b>Age<br><span style="font-size: smaller">(if under
25)</span></b></td>
       </tr>
<?      for ($i = 1; $i <= 10; $i++){ ?>
           <tr>
                   <td><input type="text" size="22" name="data[Member][<?=$i?>][name]"
id="Member<?=$i?>Name"></td>
                   <td><input type="text" size="3" name="data[Member][<?=$i?>][age]"
id="Member<?=$i?>Age"></td>

           </tr>

   <?   } ?>
   <tr>
                   <td colspan="5">
                           <?=$this->Form->button('CANCEL', array('style' => 'display:
inline', 'onclick' => 'history.back()')); ?>&nbsp;&nbsp;
                           <?=$this->Form->button('FINISH BOOKING', array('id' =>
'finishSubmit', 'type'=>'submit', 'style' => 'display: inline', 'name'
=> 'submit', 'value' => 'finshApplication', 'onclick' => "
if(confirm('Are you sure?')){return true;}return false;  "));?>
                   </td>
           </tr>
  </table>

--
Our newest site for the community: CakePHP Video Tutorialshttp://tv.cakephp.org
Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help others with their CakePHP related questions.

To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group athttp://groups.google.com/group/cake-php

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: