Передача нескольких переменных в представление? - PullRequest
2 голосов
/ 09 июля 2011

Итак, у меня есть две переменные $posts и $comments, которые содержат массив сообщений и комментариев соответственно, у меня есть отдельное представление, которое принимает эти переменные, выполняет цикл foreach и печатает их на той же странице. Вопрос здесь в том, как передать обе переменные в представление?

Если это одна переменная, я передаю ее так: $this->load->view('myview',$myvar).

Я пытался передать его как массив, как это, но все равно он не работает.

$data=array($var1,$var2);
$this->load->view('myview',$data);

Любая помощь будет принята с благодарностью! Спасибо.

Ответы [ 6 ]

9 голосов
/ 09 июля 2011

Вам нужно получить доступ к переменной в вашем представлении, когда вы ее передаете. Использование array($var1,$var2); допустимо, но, вероятно, не то, что вы хотели достичь.

Попробуйте

$data = $var1 + $var2;

или

$data = array_merge($var1, $var2);

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

Проблема с использованием array($var1,$var2); заключается в том, что вы создаете две переменные представления: ${0} и ${1} (ключи массива становятся именами переменных, в вашем массиве есть два ключа: 0 и 1 ).

Эти имена переменных недопустимые метки , поэтому вам необходимо заключить имя в {} на уровне просмотра.

Тем самым вы теряете способность называть переменные с пользой.

2 голосов
/ 10 июля 2011

Самое простое, что можно сделать в контроллере:

$data['posts'] = $posts;
$data['comments'] = $comments;
$this->load->view('your_view', $data);

Затем, на ваш взгляд, вы просто делаете что-то вроде:

foreach($posts as $post) {
...
}

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

0 голосов
/ 20 декабря 2017

1001 * попробовать *

 $data1 = 'your data';
$data2 = 123;
$data3 = array();

$this->load->view('myview', $data1 + $data2 + $data3);
0 голосов
/ 17 июля 2017
$this->render($views_array,$data);
0 голосов
/ 14 ноября 2016

это еще один и рекомендуемый способ использования compact :

$data1 = 'your data';
$data2 = 123;
$data3 = array();

$this->load->view('myview', compact('data1', 'data2', 'data3');
0 голосов
/ 09 июля 2011

Использование ассоциативного массива выглядит наилучшим возможным решением. взять массив

$data = array(
    'posts' => $posts,
    'comments' => $comments,
);
$this->load->view('myview',$data);

Возможно, это поможет вам найти решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...