Benim CakePHP denetleyicisi Mobil Numara alan değerini almak nasıl

1 Cevap php

Ben gibi Görünüm Page bir girdi alanları yaratmıştı

    <div class="input text">
      <label for="2">First Name (required) </label>
      <input type="text" value="" style="width: 300px;" id="2" class="required" name="First Name"/>
     </div>

  <div class="input text">
   <label for="5">Emailid</label>
   <input type="text" value="" style="width: 300px;" id="5" name="Emailid"/><
 /div>
<div class="input text">
<label for="6">Mobile Number</label>
<input type="text" value="" style="width: 30px;" id="6" name="Mobile Number"/>
<input type="text" value="" style="width: 30px;" id="6-1" name="Mobile Number"/>
<input type="text" value="" style="width: 70px;" id="6-2" name="Mobile Number"/>
</div>

bütün bu Page oluşturulur. ben içeriği değerleri kullanarak benim CakePHP denetçisine bu sayfayı oluşturmak alınırken am

 foreach ($_POST as $key => $value):
    echo $key;echo $value;
 endforeach;

For all the above fields i am getting the correct answer like First_Name=A&Emailid=aruna@tcs.com&Mobile_Number=3

Ama yalnız benim Mobil Numara alanına i gibi 6-2.Why böylece son id değerini alıyorum.? Üç alan (6,6-1,6-2) verilmiştir cep telefonu sayısının tam değerini almak nasıl? Lütfen beni öneririz.

Edit:

     foreach ($_POST as $key => $value):
     $mobile_number = implode('', $_POST['number']); 
   echo $mobile_number;
    $this->data['Result']['form_id']=$formid; 
    $this->data['Result']['label']=Inflector::humanize($key); 
     $this->data['Result']['value']=$value; 
   $this->Form->submitForm($this->data);
    endforeach;

i yukarıdaki gibi kullanarak anahtarı ve değerlerini tasarruf ediyorum (yani., kontrolör tüm alanları doldurun Page vardır bilmiyor). I sayfa numaranızı alanı vardır ve Key ile değerini kaydetmek için bu garanti yok sayi fillpage / alan Telefon ihtiva maynot edebilir.

Not: $ anahtar fieldname ve $ değer alan benim değerdir. Sadece PhoneNumberalan için değerler dizi ve tüm diğer durumlarda sadece tek bir değerdir.

1 Cevap

Eğer Cake kullanıyorsanız eğer, gerçekten öğrenme ve Cake ile olmalı.

Kek akışının sadece hızlı köhne:

Form page -> Submit
    ^           |
    |           v
    |        Controller // Form data is in $this->data
    |           |
    |           v
    |        $this->Model->save($this->data); -> Model
    |                                              |
    |                                              v
    -------- Controller <----------------------- Data validation
                             validation no good    |
                                                   | validation okay
                                                   v
             Controller <----------------------- Actually save data
                 |
                 v
          Go somewhere else

Bu sizin için ne anlama gelmektedir:

Formlar düzgün çalışması için $this->data merkezi. DO NOT TOUCH $_POST! Use the Cake methods for creating Forms ve veritabanında kullanılan gibi alanlar için aynı isimleri kullanmaktadırlar. Yani Cake "automagic" bir sürü kolaylaştırır. Sen değil veritabanına geçmek için bir dizi el-araya, sen baştan sona her şey için aynı isimleri kullanmak ve sadece etrafında dizi geçirmek. Eğer FormHelper alanları otomatik olarak ondan geri dolacak Kek kullanırsanız $this->data otomatik Görünümü (yani Form) için Kontrolör geri geçilecek.

Eğer formu göndererek ve verileri kaydetme arasında yapmak zorunda çalışmalarını en aza indirmek gerekir. İdeal olarak, kontrolör yalnızca şöyle:

if (!empty($this->data)) {
    if ($this->Model->save($this->data)) {
        $this->redirect(array('action' => 'next_step'));
    }
}

İşte ihtiyacınız olan tüm kod, ve o olacak

  • sayfayı görüntülemek
  • form gönderimleri ele
  • girişini doğrulamak
  • doğrulama başarısız olursa geri form alanları doldurun
  • doğrulama işlemi başarılı olursa verileri kaydetmek
  • veri başarıyla kaydedildi ise bir sonraki adıma yönlendirme

Form alanları veritabanı alanları ile 01:01 karşılık yoksa, if(!empty($this->data)) ve $this->Model->save($this->data) arasında gereken sadece bitleri çimdik:

if (!empty($this->data)) {
    $this->data['Model']['mobile_number'] = implode('-', $this->data['Model']['mobile_number']);
    if ($this->Model->save($this->data)) {
        $this->redirect(array('action' => 'next_step'));
    }
}

Eğer bütünlüğü için gönderilen form verilerini doğrulamak istiyorsanız, sadece fill in the appropriate rules in the Model. Bir $this->Model->save(), modeli otomatik olarak bir araya geldi değilseniz tasarrufu ve return false önce kuralları kontrol edecektir sorunu her zaman.