2011-06-15 3 views
0

Это мой первый день, играя с CI, и мне это очень нравится, но у меня есть проблема, которую я не могу решить самостоятельно. Проблема в том, что мне нужно создать единый вид с двумя функциями контроллера. Один DIV должен включать отдельные строки по ID из таблицы А и другой DIV должен цикл по каждому элементу на массиве из таблицы B.Проблема с CodeIgniter

public function index()//div A 
{ 
      $data['query'] = $this->db->get_where('beer', array('id' => 1)); 
    $this->load->view('corp/corp_view', $data);  
} 

public function loadList() //div B 
{ 
    $data['q'] = $this->db->get_where('list', array('id' => 1)); 
    $this->load->view('corp/mentor_list_view', $data); 
} 

Я пытался решить эту проблему в течение нескольких часов, создавая другой вид для loadList(), а затем в том числе его в главном представлении, таком как «$ this-> load-> view()», но я получаю значения из таблицы запросов «пиво» ​​таблицы index(), а не таблицы «list». Снова я новичок в этом и буду благодарен за вашу помощь.

Благодарим за помощь.

+0

Я не совсем понимаю ваш вопрос. Вы пытаетесь загрузить оба представления на определенной странице? Итак, http://foo.com/index.php/index загружает оба представления в index() и loadList()? Можете ли вы быть более подробным? – Obto

+0

Привет Фокс. Мне нужно запросить две таблицы и показать результат как на одной странице. Я пытался иметь две функции в контроллере, каждый из которых выполняет отдельный запрос. Я думаю, вопрос может быть тем, что я мог бы сделать, чтобы объединить возвращаемые данные на одной странице. Пример кода поможет. – lusiton

ответ

2

Спасибо за дополнительную информацию, я могу помочь yah сейчас.

В Codeigniter, если вы хотите создать функцию, которая не может быть вызвана пользователем, просто перед ней следует «_». Так что в вашем случае:

public function index()//div A 
{ 
    $data['query'] = $this->db->get_where('beer', array('id' => 1)); 
    $data['query2'] = $this->_mySecondQuery(); 
    $this->load->view('corp/corp_view', $data);  
} 

public function _mySecondQuery() //div B 
{ 
    return $this->db->get_where('list', array('id' => 1)); 
} 

Теперь на странице индекса у вас есть доступ к обоим запросам. Кстати, я бы не предложил делать большую работу с БД в контроллере. Работа с БД должна выполняться в моделях. Для получения дополнительной информации об этом см .: Codeigniter Models

+0

Я попытался использовать ваш пример, но я получаю сообщение об ошибке -> Call to undefined function _mySecondQuery(). Что может быть причиной этой ошибки? Спасибо – lusiton

+0

ahha извините, я забыл использовать $ this-> для ссылки на функцию в классе. Извините, что – Obto

+0

Большое спасибо за вашу помощь. Теперь я попытаюсь отделить код от контроллера и модели. Каким будет ваш способ сделать это? Я действительно хочу узнать о хороших практиках этого. – lusiton

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