Codeigniter -> 2 переменные внутри контроллера

Я пытаюсь настроить фильтр на моем сайте. Здесь я пытаюсь передать (2) переменные (район и бизнес-категория). Моя проблема в том, что только (1) из них истинно, а другое ложно или одна переменная не существует. Я пытаюсь извлечь эти данные из моего URL

mydomain.com/controller/function/neighbrohood/biz-category

что переводит

mydomain.com/ny/find/$neighborhood/$biz_filter

Когда у меня есть обе переменные, тогда нет проблем.

Как мне разрешить страницу только с 1 из 2 переменных там?

Вот моя модель:

    public function search($neighborhood = null, $biz_filter = null) {

    $neighborhood = $this->uri->segment(3);
    $biz_filter = $this->uri->segment(4);

    // SELECT
    $this->db->select('*');

    // MAIN TABLE TO GRAB DATA
    $this->db->from('biz');

    // TABLES TO JOIN
    $this->db->join('city', 'city.city_id = biz.biz_cityID');
    $this->db->join('zip', 'zip.zip_id = biz.biz_zipID', 'zip.zip_cityID = city.city_id');
    $this->db->join('state', 'state.state_id = city.city_stateID');
    $this->db->join('neighborhood', 'biz.biz_neighborhoodID = neighborhood.neighborhood_id');
    $this->db->join('biz_filter', 'biz_filter.bizfilter_bizID = biz.biz_id');
    $this->db->join('biz_category', 'biz_filter.bizfilter_bizcategoryID = biz_category.bizcategory_id');

    // RETURN VARIABLES
    $this->db->where('neighborhood.neighborhood_slug', $neighborhood);      
    $this->db->where('biz_category.bizcategory_slug', $biz_filter);

    // ORDER OF THE RESULTS
    $this->db->order_by('biz_name asc');

    // RUN QUERY
    $query = $this->db->get();

    // IF MORE THAN 0 ROWS ELSE DISPLAY 404 ERROR PAGE
    if($query->num_rows() > 0){
        return $query;

    } else {
        show_404('page');

    }

}

Пример. Скажем, я ищу ресторан в Маленькой Италии:

URL = mydomain.com/ny/find/little-italy/restuarants

В этой части я могу правильно разрешить запрос и отобразить данные. Проблема в том, что когда нет соседства или нет категории, я не могу понять, как разрешить данные.

Я новичок в codeigniter и программист-самоучка, пытаюсь понять это на ходу. Любая помощь приветствуется.

Заранее спасибо.

2 ответа

В первую очередь необязательно получать переменные из URI

$neighborhood = $this->uri->segment(3);
$biz_filter = $this->uri->segment(4);

У вас уже есть это из вашего параметра функции.

Вы можете проверить условие, где ваш $ соседство или $biz_filter доступны или нет, тогда вы можете использовать условие в своем запросе.

Что-то вроде этого

if($neighborhood) { // query for neighborhood } elseif($biz_filter) {}

Спасибо

Прежде всего вы должны получить значения переменных от вашего контроллера, а не от вашей модели, затем вы должны передать такие значения вашему контроллеру из вашей модели, это плохая практика кодирования, позволяющая вашему представлению взаимодействовать с моделью.

Кроме того, если вы хотите значение "-" для переменной. Вы должны установить "-" в качестве возвращаемого значения прямо из параметров, передаваемых в контроллер.

Что вам нужно сделать, это перейти к контроллеру и задать ему два параметра, установить значения по умолчанию для обоих параметров, а также перейти к вашей модели и заставить его также получить два параметра, передать параметры модели при вызове из контроллера. Тогда вернитесь, если есть еще ошибки.

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