У меня вопрос по 8 уроку курса codeigniter?
0
Вот мой код:
<?php
defined('BASEPATH') OR exit('No direc script access allowed');
class News extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->model('news_model');
}
public function index() {
$data['title'] = 'Все новости';
$data['news'] = $this->news_model->getNews();
$this->load->view('templates/header', $data);
$this->load->view('news/index', $data);
$this->load->view('templates/footer');
}
public function view($slug = NULL) {
$data['news_item'] = $this->news_model->getNews($slug);
if (empty($data['news_item'])) {
show_404();
}
$data['title'] = $data['news_item']['title'];
$data['content'] = $data['news_item']['text'];
$this->load->view('templates/header', $data);
$this->load->view('news/view', $data);
$this->load->view('templates/footer');
}
public function create() {
$data['title'] = "Добавить новость";
if ($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {
$slug=$this->input->post('slug');
$title=$this->input->post('title');
$text=$this->input->post('text');
if ($this->news_model->setNews($slug, $title, $text)) {
$this->load->view('templates/header', $data);
$this->load->view('news/success', $data);
$this->load->view('templates/footer');
} else {
$this->load->view('templates/header', $data);
$this->load->view('news/create', $data);
$this->load->view('templates/footer');
}
}
}
public function edit($slug = NULL) {
$data['title'] = "редактировать новость";
$data['news_item'] = $this->news_model->getNews($slug);
/* if(empty($data['news_item'])) {
show_404();
}*/
$data['title_news'] = $data['news_item']['title'];
$data['content_news'] = $data['news_item']['text'];
$data['slug_news'] = $data['news_item']['slug'];
if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {
$slug = $this->input->post('slug');
$title = $this->input->post('title');
$text = $this->input->post('text');
if($this->news_model->updateNews($slug, $title, $text)) {
echo "Новость успешно отредактирована";
}
}
$this->load->view('templates/header', $data);
$this->load->view('news/edit', $data);
$this->load->view('templates/footer');
}
}
И у меня вот такие ошибки выходят:
A PHP Error was encountered
Severity: Warning
Message: Trying to access array offset on value of type null
Filename: controllers/News.php
Line Number: 67
Backtrace:
File: C:\xampp\htdocs\kinomonster\application\controllers\News.php
Line: 67
Function: _error_handler
File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: Trying to access array offset on value of type null
Filename: controllers/News.php
Line Number: 68
Backtrace:
File: C:\xampp\htdocs\kinomonster\application\controllers\News.php
Line: 68
Function: _error_handler
File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: Trying to access array offset on value of type null
Filename: controllers/News.php
Line Number: 69
Backtrace:
File: C:\xampp\htdocs\kinomonster\application\controllers\News.php
Line: 69
Function: _error_handler
File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once
Подскажите пожалуйста что мне делать.
3 ответов
0
Ошибка говорит о том, что при обращению к массиву, там ничего нет. Нужно посмотреть, что приходит от модели с новостями. Через var_dump функцию это можно сделать.
вот тут пример есть как пользоваться этой функцией:
https://www.php.net/manual/en/function.var-dump.php
или можно исходный код киномонстр скачать и сравнить со своим кодом
0
Я правильно понимаю, что ошибка возникает на этой странице?
public function edit($slug = NULL) {
Если да, покажи вывод var_dump примерно так:
public function edit($slug = NULL) {
$data['title'] = "редактировать новость";
$data['news_item'] = $this->news_model->getNews($slug);
echo "<pre>";
var_dump($this->data['news_item']);
echo "</pre>";
die();
Ошибка говорит, что в массиве $data['news_item']['slug'] нет slug ключа, вот в этой строчке:
$data['slug_news'] = $data['news_item']['slug'];
Возможно забыл добавить slug в базу данных.
0
<?php
class News_model extends CI_Model {
public function __construct() {
$this->load->database();
}
public function getNews($slug = FALSE){
if ($slug === FALSE) {
$query = $this->db->get('news');
return $query->result_array();
}
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
public function setNews($slug, $title, $text) {
$data = array (
'title' => $title,
'slug' => $slug,
'text' => $text
);
return $this->db->insert('news', $data);
}
public function updateNews($slug, $title, $text) {
$data = array(
'title' => $title,
'slug' => $slug,
'text' => $text
);
return $this->db->update('news', $data, array('slug' => $slug));
}
}
?>
Вот мой код модели.