Как удалить имя контроллера и имя функции в codeigniter

Я создаю сайт-каталог в codeigniter. При загрузке целевой страницы предлагается выбрать штат, а затем город. Затем он перенаправляет с www.example.com на www.example.com/location/city-name/.

Здесь Site - это имя контроллера, а location - имя функции внутри него.

Я уже удалил имя контроллера из URL-адреса, используя route.php. Код ниже:

$route['location/(:any)'] = 'site/location';

Но я также хочу удалить местоположение имени функции из URL-адреса, а URL-адрес должен быть www.example.com/city-name/.

Кроме того, когда категория выбрана после выбора города, она должна быть перенаправлена ​​на www.example.com/city-name/category-name/, но я могу перенаправить на www.example.com/location/city-name/category-name/ только с помощью следующих строк в route.php:

$route['location/(:any)/(:any)'] = 'site/location';

Я могу захватить название города и категории, используя $ this-> uri-> segment, и использовать то же самое для процесса фильтрации, с этим нет абсолютно никаких проблем.

Но основной проблемой остается удалить имя функции место расположения.

Я просмотрел предлагаемые вопросы, прежде чем опубликовать этот вопрос, но не смог найти подходящего решения. Может ли кто-нибудь помочь мне в достижении цели?

Контроллер моего сайта ниже:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Site extends CI_Controller {
public function __construct() {
    parent::__construct();
    $this->load->helper('file');
    $this->load->model('query_model'); 
    $this->load->library("pagination");
    error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
    }
   public function index(){
    $this->load->view('website/index');
  }
  public function location(){
    $this->load->view('website/index');
  }
}

Я думаю, что делаю ошибку либо в функции индекса, либо в функции местоположения. Функция определения местоположения - это не что иное, как отображение индекса. В представлении индекса есть код для захвата сегмента uri и соответствующей фильтрации данных.

Мой код, который передает идентификатор состояния функции jquery:

<a onclick="get_cities(2)">Andaman &amp; Nicobar Islands</a>

Мой код jquery get_cities (id) ниже:

        function get_cities(id){
        var aj_url="<?= base_url();?>ajax_post_controller/show_cities";
        jQuery.ajax({
            type: "POST",
            url: aj_url,
            data: {id: id,},
            success: function(res, status) {
                if (res)
                {
                    alert(res);
                    $("#loc-head").html("Select City");
                    $("#loc-data").html(res);
                    $(".modal-footer").css("display","block");
                }
            }
        });
    }

После определения кода ниже: $ route ['(: любой)'] = 'сайт'; $ route ['(: любой) / (: любой)'] = 'сайт';

Оповещение от функции get_cities, возвращающее html-код индексной страницы и индексной страницы, также отображается в открытой модели.

Если я прокомментирую две строки выше, я получаю список городов, который возвращает URL-адрес города.

<a href="http://example.com/visakhapatnam/">Visakhapatnam</a>

Но из-за того, что выше 2 строки маршрута прокомментированы над URL-адресом города, дают ошибку 404.

0
0
362
2

Ответы 2

Надеюсь, что это поможет вам :

  $route['location'] = 'site/index'; /* redirect to index method */
  $route['location/(:any)'] = 'site/location'; /* redirect to location*/
  $route['location/(:any)/(:any)'] = 'site/location/$1';

Я изменил отредактированный на "$route['location/(:any)'] = 'site/$1'". После выбора штата и города на приземлении www.example.com он указывает на URL-адрес www.example.com/palasa-kasibugga/. Он должен отображать результаты, отфильтрованные по выбранному городу. Но он отображает 404 Страница не найдена. Причину я не мог понять.

Shubh 12.04.2018 08:50

это зависит от того, как вы перенаправляете страницу и переданный параметр

Pradeep 12.04.2018 09:14

Я перенаправляю страницу на www.example.com/palasa-kasibugga/. base_url (). $ city-> slug ;. Если это неправильно, можете ли вы дать мне пример того, каким должен быть мой URL-адрес?

Shubh 12.04.2018 09:44

где находится строка местоположения, перенаправляющая весь URL-адрес сайта для прохождения с местоположением, а также то, что является вашим контроллером по умолчанию

Pradeep 12.04.2018 09:47

Хорошо, теперь я добавил www.example.com/location/north-lakhimpur/. По-прежнему отображается 404 Страница не найдена. Я редактирую вопрос, чтобы добавить свой контроллер и функцию определения местоположения.

Shubh 12.04.2018 09:57

если вы установите $ route ['location / (: any)'] = 'site / location' », будет перенаправлять на метод определения местоположения, значит www.example.com/location/north-lakhimpur/ перейти к методу местоположения контроллера сайта

Pradeep 12.04.2018 10:54

Привет, Прадип, я хочу достичь www.example.com/north-lakhimpur/, а не www.example.com/location/north-lakhimpur/, любезно скажите мне маршрут, URL-адрес и метод, если я сделал совершенно неправильно.

Shubh 12.04.2018 12:26

установите маршрут ур таким образом; $ route ['default_controller'] = 'сайт'; $ route ['(: любой)'] = 'сайт / местоположение'; $ route ['(: любой) / (: любой)'] = 'сайт / местоположение / $ 2';

Pradeep 12.04.2018 12:48
localhost / тестирование / север-лахимпур перейдет в метод локации
Pradeep 12.04.2018 12:48

Позвольте нам продолжить обсуждение в чате.

Shubh 12.04.2018 15:25

занимаюсь исследованиями и разработками, не могу вам помочь, извините, время в офисе закончилось, мне нужно идти

Pradeep 12.04.2018 15:31

добавить вот так

В routes.php

$route['location/(.*)'] = 'site/index';

В контроллере

public function index(){
    if($this->uri->segment(1) && $this->uri->segment(2)){
        $this->load->view('website/category');
    }elseif($this->uri->segment(1)){
        $this->load->view('website/city');
    }else{
        $this->load->view('website/index');
    }   
}

Другие вопросы по теме

Логика php для системы динамического бронирования мест в автобусе в codeigniter
Зашифрованное значение codeigniter нужно расшифровать с помощью node js?
Синтаксическая ошибка: в codeigniter обнаружено неперехваченное исключение, неожиданное общедоступное (t_public)
Декодировать данные с помощью nodejs, которые я закодировал библиотекой шифрования codeigniter
Как сделать центр положения изображения в div mpdf
Я хочу получить и показать изображение в форме данных таблицы не в форме заголовка изображения в сырье из базы данных, но не могу предварительно просмотреть изображение в codeigniter, php
Как изменить регистрацию электронной почты по умолчанию на регистрацию / вход в firebase otp в codeigniter
Codeigniter неожиданно зависает после эхо-запроса большого расшифрованного файла
Произошла ошибка php: mysqli :: real_connect (): (hy000 / 1049): неизвестная база данных 'r' / доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: да)
Работа cron запрещена в cpanel codeigniter 3