2012-11-09 50 views
2

我有一個使用codeigniter uri語言標識符和form_validation的問題。Codeigniter uri語言標識符和form_validation不起作用

問題是當我將$ config ['lang_ignore']設置爲FALSE時,form_validation停止工作。 我已經在乾淨的codeigniter安裝和設置uri語言標識符進行了測試,如codeigniter的wiki中所述。

這裏是我的控制器應用程序/控制器/ form_validation_test.php:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Form_validation_test extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
} 

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



//Get Ajax POST: 
public function getPost() 
{ 
    $result = FALSE; 
    $data = NULL; 

    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('user','User','required'); 

    $result = $this->form_validation->run(); 

    $response = array(
     'result' => $result 
    ); 

    $this->output->set_content_type('application/json') 
      ->set_output(json_encode($response)); 
} 
} 

View應用程序/視圖/ form_validation_view.php:

<script src="http://ci_test.localhost/js/jquery-1.8.2.min.js" type="text/javascript"></script> 
<script type="text/javascript" src="http://ci_test.localhost/js/ci_test.js"></script> 

<form name="formulario" id="formulario" action="http://ci_test.localhost/form_validation_test/getPost"> 
    <input type="text" id="user" name="user" value=""> 
</form> 

<input type="button" id="btnSubmit" value="submit"> 

<div id="result"></div> 

和JavaScript文件JS/ci_test.js:

jQuery(document).ready(function(){ 

jQuery('#btnSubmit').click(function(){ 

    var postData = jQuery('#formulario').serialize(); 
    var targetUrl = jQuery('#formulario').attr('action');  

    jQuery.ajax({ 
     url:  targetUrl, 
     data:  postData, 
     type:  'post', 
     dataType: 'json', 

     success: function (data, textStatus, jqXHR) { 
      res = data.result ? 'TRUE':'FALSE'; 
      jQuery('#result').html(res); 

     } 

    }); 
}); 
}); 

所以,你可以看到我通過ajax請求發送文章,只是得到結果和地方它在div中。如果將'lang_ignore'設置爲TRUE,它將起作用,但如果將其設置爲FALSE,則不起作用。

我已經觀察到的另一個現象是,當everythig工作得很好,你看到螢火蟲的POST請求,但使用lang_ignore時爲FALSE,你可以看到POST請求,並且仍然加載一個GET請求。我不知道爲什麼發生這種情況,但也許可以幫助別人找到問題。

任何幫助,將不勝感激。 謝謝你的時間。

回答

0

我找到了解決方案。

如果將lang_ignore參數設置爲FALSE,則應用程序/ core/MY_lang.php文件中的構造函數會執行一次重定向,並且(如果我錯了,請糾正我)會丟失POST。

所以包括語言段在一個單一的請求中直接進行。

http://ci_test.localhost/en/form_validation_test/getPost 

它的工作對我來說,希望能幫助別人