2015-08-15 2 views
2

Я пытаюсь реализовать форму поиска на своем веб-сайте с помощью Codeigniter 3.0, и у меня возникают некоторые проблемы с методом redirect().codeigniter не перенаправляет на utf-8 url

То, что я хочу сделать, это когда я типа некоторые строки и нажмите клавишу ввода, он будет делать запрос на пост к контроллеру, то контроллер получит строку и перенаправить текущий URL в http://example.com/search/string

Итак, являются коды, которые у меня есть: форма

поиск:

<form action="/search" method="post" accept-charset="UTF-8"> 

контроллер, который получает строку поиска и сделать перенаправление:

public function do_search() { 
    $search = $this->input->post('search'); 

    log_message('debug', 'search: ' . $search); 

    if ($search) { 
     redirect('search/' . $search, 'refresh'); 
    } else { 
     redirect('/', 'refresh'); 
    } 
} 

config.php:

$config['permitted_uri_chars'] = 'üÜöÖğĞıİəƏçÇşŞ a-z 0-9~%.:_\-'; 

Кроме того, я следующий код на моем регуляторе: MY_Controller

$this->output->set_header('Content-Type: text/html; charset=utf-8'); 

Теперь, когда я типа "həə" на моей форме поиска , он перенаправляет, но url становится как "hÉÉ". Как вы видите, я регистрирую строку поиска на своем контроллере, которая правильно печатается. (например, "həə").

Я что-то упустил? Есть идеи, как это решить?

ответ

0

Я написал небольшой код jQuery для перенаправления, и это действительно сработало в моем случае.

$("form[name=search]").submit(function (e) { 
    e.preventDefault(); 
    window.location = "/search/" + $("input[name=search]").val(); 
}); 
0

Поддержка non ascii - общая проблема в программном обеспечении, и это особая проблема в программном обеспечении, связанное с браузером. Что вы должны сделать, это получить входящие значения и иметь своего рода логику и сделать переназначение. Codeigniter имеет встроенную функцию переназначения.

Он вызывается:

function _remap($method) 
    { 
     // here your logic 

    } 

Вы можете иметь эту функцию в каждом контроллере.

Небольшой ответ: Если вы поддерживаете несколько языков, то вам следует передавать по каждому запросу язык в GET или POST или Cookie и иметь своего рода логику. В противном случае у вас возникнут проблемы.

Смежные вопросы