поэтому у меня есть две переменные $posts
и $comments
которые содержат массив сообщений и комментариев соответственно, у меня есть отдельное представление, которое принимает эти переменные, выполняет цикл foreach и печатает их на одной странице. Вопрос здесь в том, как передать обе переменные в представление?
Если это одна переменная, я $this->load->view('myview',$myvar)
ее так, как этот $this->load->view('myview',$myvar)
.
Я пробовал передать его как массив, похожий на этот, но все равно он не работает.
$data=array($var1,$var2); $this->load->view('myview',$data);
Любая помощь будет принята с благодарностью! Благодарю.
Вам нужно получить доступ к переменной в своем представлении при ее передаче. Использование array($var1,$var2);
действительно, но, вероятно, не то, что вы хотели достичь.
Пытаться
$data = $var1 + $var2;
или
$data = array_merge($var1, $var2);
вместо. См. « Views» для подробной документации о доступе к переменным, переданным в представление.
Проблема с использованием array($var1,$var2);
что вы создадите две переменные вида: ${0}
и ${1}
(ключи массива становятся именами переменных, у вас есть два ключа в вашем массиве: 0
и 1
).
Эти имена переменных являются недопустимыми ярлыками, поэтому вам нужно заключить имя с {}
на уровне представления.
Благодаря этому вы теряете способность использовать переменные полезными.
Самое легкое в своем контроллере:
$data['posts'] = $posts; $data['comments'] = $comments; $this->load->view('your_view', $data);
Тогда, на ваш взгляд, вы просто просто делаете что-то вроде:
foreach($posts as $post) { ... }
Вы можете удерживать любой объект в переменной $ data, передаваемой вашему представлению. Когда мне нужно пройти через результирующие наборы, которые я получаю от своих моделей, я делаю так.
Использование ассоциативного массива выглядит наилучшим решением. взять массив
$data = array( 'posts' => $posts, 'comments' => $comments, ); $this->load->view('myview',$data);
Вероятно, это поможет вам найти решение.
это другой и рекомендуемый способ использования compact :
$data1 = 'your data'; $data2 = 123; $data3 = array(); $this->load->view('myview', compact('data1', 'data2', 'data3');
пытаться
$data1 = 'your data'; $data2 = 123; $data3 = array(); $this->load->view('myview', $data1 + $data2 + $data3);
$this->render($views_array,$data);