2012-02-17 13 views
5

Yük -> görünüm yöntemiyle hata mesajını göstermek için CodeIgniter form onayını buldum ve "yönlendirme" kullanılıyorsa alan hatası mesajını kaybettim.CodeIgniter'de farklı işlevlerde aynı get-url'e bir post-method formu nasıl gönderilir?

Şu anda form sayfasını göstermek için bir işlev ve posta formunu dağıtmak için başka bir işlev kullanıyorum.

form doğrulama başarısız
 
class Users extends CI_Controller { 
    function __construct() { 
     parent::__construct(); 
    } 

    public function sign_up() 
    { 
    $this->load->view('users/sign_up'); 
    } 

public function do_sign_up(){ 
     $this->form_validation->set_rules('user_login', 'User Name', 'trim|required|is_unique[users.login]'); 
     $this->form_validation->set_rules('user_email', 'Email', 'trim|required|valid_email|is_unique[users.email]'); 

     if ($this->form_validation->run() == FALSE) { 
      $this->load->view('users/sign_up'); 
     }else { 
     // save post user data to users table 
     redirect_to("users/sign_in"); 
} 


, tarayıcıda url "/ kullanıcılar/do_sign_up" olarak değiştirildi olacak, ben sign_up sayfasında aynı url tutmak istiyorum.

Form doğrulama başarısızken yönlendirme ("users/sign_up") yöntemini kullanın, aynı URL'yi saklar, ancak doğrulama hata iletisi kaybolur. Rails

, böyle yapılandırma için yolları cant'kullanma:

 
get "users/sign_up"  => "users#signup" 
post "users/sign_up"  => "users#do_signup" 

cevap

4

o sayfaya kullanıcının GET 'sen kaydolma görüntüsünü göstermek istiyorum çünkü eğer istek yöntemini kontrol etmek gerekli değildir imho ... 'POST' sayfasını sayfaya yönlendirir ve doğrulama işlemini tamamlamazsa, sizden kayıt görünümünü göstermek istersiniz. Sadece kullanıcının 'POST' sayfasını sayfaya kaydettiğinde ve doğrulama işlemini geçtiğinde kayıt görünümünü göstermek istemezsiniz.

public function sign_up() 
{ 
    // Setup form validation 
    $this->form_validation->set_rules(array(
     //...do stuff... 
    )); 

    // Run form validation 
    if ($this->form_validation->run()) 
    { 
     //...do stuff... 
     redirect(''); 
    } 

    // Load view 
    $this->load->view('sign_up'); 
} 

Btw bu im benim CI KO-benzeri haline yapmak benim config/routes.php içeride ne yapıyor:

imho burada CodeIgniter'daki bunu yapmak için en şık yolu. Rota.php dosyanızın normal bir php dosyası olduğunu unutmayın, böylece istek yöntemine bağlı olarak farklı yollar oluşturmak için bir anahtar koyabilirsiniz.

switch ($_SERVER['REQUEST_METHOD']) 
{ 
    case 'GET': 
     $route['users/sign_up'] = "users/signup"; 
    break; 
    case 'POST': 
     $route['users/sign_up'] = "users/do_signup"; 
    break; 
} 
+0

Bu iyi görünüyor. Böyle düşünmemiştim. – Mischa

-2
<button type="submit"class="md-btn btn-sm md-fab m-b-sm indigo" id="filterbtn" formaction="<?php echo base_url(); ?>front/get_filter/<?php echo$device_id;?>"><i class="fa fa-bar-chart"></i></button> 
<button type="submit"class="md-btn btn-sm md-fab m-b-sm indigo" id="filterbtn" formaction="<?php echo base_url(); ?>front/get_data/<?php echo$device_id;?>"><i class="fa fa-th-list"></i></button> 
İlgili konular