CodeIgniter ile bir formu işlemek nasıl

4 Cevap php

Ben CodeIgniter yeni duyuyorum. Ben bir formu işlemek gerekir. Ben görünümünde bir form.html sayfa var

<html>
  <head>
    <title>Search</title>
  </head>
  <body>
    <form action="search">
      <input type="text" name="search" value="" size="50" />
      <div>
        <input type="submit" value="Submit" />
      </div>
    </form>
  </body>
</html>

ve form denetleyici

class Form extends Controller {

  function Form() {
    parent::Controller();   
  }

  function index() {    
    $this->load->view('form');
  }

}

ve ben bir görünüm dosyası search.php var ama işlendiğinde bu sayfa bulunamadı gösterir ...

4 Cevap

In M. Odel V. Iew CodeIgniter gibi C. Ontrol kurulumları İzlenme kullanıcı arabirimi öğeleri vardır. Bu sonuçlar ayrıştırma olmamalıdır.

Yanılmıyorsam eğer, ne yapmak isteyen www.yoursite.com/index.php/search için www.yoursite.com/index.php/form veri pass

Yapılandırılmamış php Eğer [(4)] {yönlendirmek olabilir, yoursite.com/search.php çağırır hangi bir form.html with a form action of search.php . A user would navigate to yoursite.com/form.html olabilir }.

CodeIgniter'daki (ve bildiğim kadarıyla anladığım kadarıyla, herhangi bir MVC sisteminde, dili ne olursa olsun) sizin Controller, Form form.html yükler bir işlevi çağırır View into itself ve çalıştırır. View kodu üretir (genellikle HTML, ama şart değildir), kullanıcının ile etkileşime girdiği. Kullanıcı Görünüm (daha fazla veri veya başka bir sayfa için istekleri) işleyemez bir istek yaptığında onu daha geri veri veya başka bir View yükler Kontrolörü, bu isteği geçirir.

Diğer bir deyişle, Görünüm verilerin görüntülenmesi olacak nasıl belirler. Kontrol İzlenme istekleri eşler.

Eğer bir görünümde görüntülenen karmaşık ve / veya değişen verileri istediğiniz zaman biraz daha karmaşık alır. Muhafaza etmek için separation of concerns that MVC requires CodeIgniter also provides you with Models.

Veri akışını yönetmek - Modeller herhangi bir web uygulamasının en zor kısmı sorumludur. Bunlar, veri okumak veri yazmak yöntemleri içeren, ve en önemlisi, veri bütünlüğünü sağlamak için yöntemler. Diğer bir deyişle Modeller gerekir:

  • Veriler doğru biçimde olduğundan emin olun.
  • Veriler için mukadder ortamını kırmak olabilir (kötü niyetli veya başka) bir şey içerdiğinden emin olun.
  • C. Reating için yöntemler sahiptirler, R. Eading, U. Pdating ve D. Yukarıdaki kısıtlamalar içinde veri eleting.

Akelos MVC bileşenleri dışarı atarken iyi bir grafik vardır:

Request-Response

Söyleniyor, size ne yapmak istediğinizi gerçekleştirmek için bir yol ("kolay", "en genişletilebilir" değil okuma) kolayı var:

function Form()
{
    parent::Controller();   
}

function index()
{   
        $this->load->view('form');
}

function search()
{
        $term = $this->input->post('search');
        /*
            In order for this to work you will need to 
            change the method on your form.
            (Since you do not specify a method in your form, 
            it will default to the *get* method -- and CodeIgniter
            destroys the $_GET variable unless you change its 
            default settings.)

            The *action* your form needs to have is
            index.php/form/search/
        */
        //Operate on your search data here.
        //One possible way to do this:
        $this-load-model('search_model');
        $results_from_search = $this->search->find_data($term);
        // Make sure your model properly escapes incoming data.
        $this->load->view('results', $results_from_search);
}

File yüklemek için denetleyici olmadan ve görüntüleme işe yaramaz. Daha sonra işlem sonucunu görüntüleme, form veri, süreç onu almak için bir denetleyici oluşturmanız gerekir.

Siz form açık etiketleri, aynı zamanda yakın etiketleri ayarlamak için bir form yardımcısı kullanabilirsiniz:

<?php echo form_open('form/search'); ?>
<input type="text" name="search" value="" size="50" />
<div><input type="submit" value="Submit" /></div>
<?php echo form_close(); ?>

Form yardımcı kullanarak olmadan, hala bu şekilde yazabilirsiniz:

<form action="<?php echo site_url('form/search'); ?>">

Sonra form, denetleyiciye search yöntemini ekleyin:

function search()
{
  //get form field
  $search = $this->input->post('search');
  // do stuffs here
  //...
}

CI sadece temel kod organizasyonu ile size yardımcı ve yararlı bir kütüphane ve bir yardımcı sağladığını unutmayınız. Ama yine de sitenize sürecinin algoritma yazmak gerekir.

Indirilen CodeIgniter paketinde bulunan kullanım kılavuzunu okuyun unutmayın. Orada örneğin birçok maddeleri öğrenebilirsiniz. Burada bilmiyorum şeyler sormak için tereddüt etmeyin, stackoverflow birçok üyesi size yardımcı olacaktır.

Emin doğru yere işaret yapmak için eylem CodeIgniter 'SITE_URL' kullanmayı deneyin. Sizin örnekte eylem 'arama' denetleyicisi yerine 'form' denetleyiciye giderdi.

<html>
<head>
<title>Search</title>
</head>
<body>
<form action="<?= site_url('form/process_search') ?>">
<input type="text" name="search" value="" size="50" />
<div><input type="submit" value="Submit" /></div>
</form>
</body>
</html>

index başka bir şey geçtiğinde .. controller sadece kullanılan Yani benim yukarıdaki örnek durumda böyle bir şey isteyeyim:

function Form()
{
    parent::Controller();   
}

function process_search()
{   

     print "<pre>";

     print_r($_POST);

     print "</pre>";
}

Nettuts Giriş formunda için CodeIgniter için büyük bir öğretici vardır. Screencast izleyin ve bu sorular kadar açık olacak.

http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-6-login/