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) {}
Спасибо
Прежде всего вы должны получить значения переменных от вашего контроллера, а не от вашей модели, затем вы должны передать такие значения вашему контроллеру из вашей модели, это плохая практика кодирования, позволяющая вашему представлению взаимодействовать с моделью.
Кроме того, если вы хотите значение "-" для переменной. Вы должны установить "-" в качестве возвращаемого значения прямо из параметров, передаваемых в контроллер.
Что вам нужно сделать, это перейти к контроллеру и задать ему два параметра, установить значения по умолчанию для обоих параметров, а также перейти к вашей модели и заставить его также получить два параметра, передать параметры модели при вызове из контроллера. Тогда вернитесь, если есть еще ошибки.