Передача переменной из контроллера для просмотра в CodeIgniter - программирование
Подтвердить что ты не робот

Передача переменной из контроллера для просмотра в CodeIgniter

Я новичок в Codeigniter и OOP PHP.

Контроллер:

public function index(){
    $this->load->model('main_model');
    $planet = $this->main_model->solar();
    $this->load->view('main_view', $planet);    
    }

Если echo $planet в контроллере делает то, что он должен делать. Если я echo $planet в представлении, я получаю ошибку переменной undefined. $planet не является массивом. Почему переменная $planet не передается в представление?

Я знаю, что это простой и простой вопрос, и я смущен, что не могу понять, что я делаю неправильно.

РЕДАКТИРОВАТЬ: Хорошо, после того, как я снова начал играть, я заставил его работать. Могут ли переменные передаваться только из Controller в View, когда они отформатированы как массив?

4b9b3361

Ответ 1

Вам нужно передать массив в представление. CodeIgniter автоматически делает $planet доступным для вас.

$data = array('planet' => $planet);
$this->load->view('main_view', $data);

С этим вы можете использовать $planet в своем представлении.

Например, если вы выполните следующее:

$data = array('foo' => 'Hello', 'bar' => 'world');
$this->load->view('main_view', $data);

$foo и $bar будут доступны в вашем представлении. Пара ключей-значений в массиве автоматически преобразуется в переменные в представлении.

Ответ 2

Вы можете передать либо массив, либо объект в представление. Затем вы можете получить доступ к ключу массива в виде переменной (ов) в вашем представлении.

контроллер

Массив

public function index()
{
    $this->load->model('main_model');
    $planet_data['planet'] = $this->main_model->solar();
    $this->load->view('main_view', $planet_data);
}

Объект

public function index()
{
    $this->load->model('main_model');
    $planet_data = new stdClass(); //Creates a new empty object
    $planet_data->planet = $this->main_model->solar();
    $this->load->view('main_view', $planet_data);
}

Из Руководство пользователя CodeIgniter: Примечание. Если вы используете объект, переменные класса будут преобразованы в элементы массива.

Вид

Независимо от того, как вы передаете данные, его можно отобразить следующим образом:

<?php echo $planet; ?>

Если это массив, вам нужно будет перебирать его. Или объект, затем получите доступ к его переменным-членам.


В моем опыте использование массива более распространено, чем использование объекта.

Ответ 3

вот как это сделать легко

public function index() {
    $this->load->model('main_model');
    $data['planet'] = $this->main_model->solar();
    $this->load->view('main_view', $data);    
}

Теперь вы можете получить доступ к этому значению таким образом

echo $planet;

Ответ 4

Попробуйте:

public function index(){
    $this->load->model('main_model');
    $data['planet'] = $this->main_model->solar();
    $this->load->view('main_view', $data);    
}

и при вашем представлении вы можете получить доступ к "$ planet". Это ответ. answer, если он полезен

Ответ 5

вы можете передать переменную в URL-адресе на

function regresion($value) {

    $data['value'] = $value;
    $this -> load -> view('cms/template', $data);
}

В представлении

<?php print_r($value);?>

Ответ 6

Если модальный содержит ответ массива:

public function solar() {
   $data['earth'] = 'Earth';
   $data['venus'] = 'Venus';
   return $data;
}

тогда вы можете просмотреть следующие данные:

public function index(){
    $this->load->model('main_model');
    $planet = $this->main_model->solar();
    $this->load->view('main_view', $planet);    
}

Но при просмотре у вас будут данные доступа, например:

echo $earth;
echo $venus;

если вы не знаете, что ответ будет получен, используйте следующий код:

public function index(){
    $this->load->model('main_model');
    $planet['planet'] = $this->main_model->solar();
    $this->load->view('main_view', $planet);    
}

и в файле просмотра вы можете получить доступ к следующим данным:

print_r($planet);

Если вы не знаете, какие данные будут отображаться, просто используйте этот код в представлении:

print_r($this->_ci_cached_vars);