Выходит ошибка в codeigniter invalid argument supplied for foreach(), как исправить?

3

Ошибка в codeigniter при создание Описании фильмов 

Message: Invalid argument supplied for foreach()

Filename: descriptions/index.php

Line Number: 5

если даже все указано верно без ошибок, параметр задан, путь к бд задан, но выходит ошибка не уходит

php
xampp
codeigniter

11 ответов

2

Покажите содержимое файла descriptions/index.php, а также контроллер, который отвечает за это view.

2

Этот файл Filename: descriptions/index.php тоже покажите

2
public function index($slug = NULL)

{
$this->data['title'] = "Описание";
$this->data['descriptions'] = $this->descriptions_model->getDescriptions();

$this->load->view('templates/header', $this->data);
$this->load->view('descriptions/index', $this->data);
$this->load->view('templates/footer');
}

public function view($slug = NULL)

{
$this->data['descriptions_item'] = $this->descriptions_model->getDescriptions($slug);

if(empty($this->data['descriptions_item'])) {
show_404();
}

$this->data['title'] = $this->data['descriptions_item']['title'];
$this->data['content'] = $this->data['descriptions_item']['text'];

$this->load->view('templates/header', $this->data);
$this->load->view('descriptions/view', $this->data);
$this->load->view('templates/footer');
}
2
<h1>Описание</h1>

<p><a href="/descriptions/create/">добавить описание</a></p><br>

<?php foreach ($descriptions as $key => $value): ?>
<p>
<a href="view/<?= $value['slug']; ?>"><?= $value['title']; ?></a> |
<a href="edit/<?= $value['slug']; ?>">редактировать</a> |
<a href="delete/<?= $value['slug']; ?>">Удалить</a>
</p>
<?php endforeach ?>
2

еще при переходе по ссылке descriptions/create/ выходит так же ошибка

Невозможно загрузить запрошенный файл: description / create.php  

хотя название description нигде не указана только descriptionS

2

echo "<pre>"; var_dump($this->data['descriptions']); echo "</pre>";

не помогло 

2

то есть ничего не вывел 

3

ааа я параметр в модели не правильно задал, все заработало спасибо 

2

В контроллере в методе index вставьте var_dump, т.е. так:

public function index($slug = NULL)

{
    $this->data['title'] = "Описание"; 
    $this->data['descriptions'] = $this->descriptions_model->getDescriptions();

    echo "<pre>";
    var_dump($this->data['descriptions']);
    echo "</pre>";

    $this->load->view('templates/header', $this->data);
    $this->load->view('descriptions/index', $this->data);
    $this->load->view('templates/footer');
}

Вывод вардампа сюда приложите. Если в foreach такая ошибка - это обычно значит, что нет в массиве $value['title'] или $value['slug']/

2

Что не помогло? var_dump должен содержимое массива $this->data['descriptions'] показать, а не решить проблему.  

3

Если var_dump ничего не выводит - это значит, что в массиве $this->data['descriptions'] ничего нет, значит нужно смотреть модель, какой там запрос написан и саму базу.

Sign up or Log in to write an answer