Пользовательская строка кода Codeigniter

0

Я новичок в Codeigniter, и я работаю над созданием сайта для врачей и должен разрешить пользователям искать врачей, используя простой URL-адрес, например http://www.mywebsite.com/newyork. Также этот url не имеет никакого класса, поскольку там может быть много состояний и не может иметь класс для каждого состояния. Должен ли я изменить переопределение 404 в сценарии маршрутов? Или есть лучший способ добиться этого

$route['(:any)']='search/check_state';

если я использую выше маршрутизации, то другая страница, например, /login, не работает. Пожалуйста, помогите

  • 0
    вам действительно нужно больше времени уделять чтению документации о том, как работают контроллеры, страницам ошибок и маршрутам
  • 0
    Хотя я согласен с вышеприведенным пунктом, также очевидно, что вам необходимо понять, как работают запросы страниц в целом, я рекомендую немного почитать этот вопрос. Например, опубликованный вами поиск может быть легко выполнен с помощью индексной функции в классе с именем «newyork», даже не затрагивая маршрутизацию. Здесь нет необходимости поддерживать состояние. поиск, как правило, будет проводиться через параметры GET или POST, которые можно даже разместить в одной и той же индексной функции.
Показать ещё 1 комментарий
Теги:
codeigniter

2 ответа

0
Лучший ответ

Создайте базу данных, содержащую все состояния, и сделайте это так

Внутри поиск /check_state

// Get state from URL
$state = $this->uri->segment(1, "");

// Make sure state is not null and its found in database
if($state <> "" && $this->validateState($state)){
    // Valid state, continue
}else{
    // Give error message / redirect to 404 page
}

Добавить новую функцию в контроллер

function validateState($state){
    // If database contains $state then return true else return false
}

ОБНОВИТЬ

Вы также можете сделать это с помощью формы POST.

Создайте форму на странице, где пользователь вводит данные ввода

echo form_open(base_url().'path_to_post_validation');
// make form here that sends "state" into page that handles validation
echo form_close();

Обработка проверки POST

// Make sure user has send POST request
if($this->input->post()){

    // Set form validation rules
    $this->form_validation->set_rules('state', 'state', 'required|trim|xss_clean');

    // Run form validation
    if ($this->form_validation->run() == TRUE){

        // Store state into variable
        $state = $this->input->post('state');

        // Check database that it contains $state and then continue or give error message
    }
}
  • 0
    да, я сделал это так, но вопрос в основном заключается в том, чтобы узнать, есть ли альтернативный способ, а не использовать подстановочный знак на странице маршрутизаторов.
  • 0
    Один из способов - отправить состояние с помощью GET или POST, тогда вам не нужны маршруты.
Показать ещё 3 комментария
0

попробовал

$route['search/check_state/:any'] ='search/check_state';
  • 0
    но URL будет иметь вид mywebsite.com/[state name]. поэтому не уверен, как здесь будет работать вышеуказанный маршрут

Ещё вопросы

Сообщество Overcoder
Наверх
Меню