Помогите разобраться ошибкой в undefined property в codeigniter?

0
уже 3 день застрял на уроке кодегнитер

никак не могу понять сам и на форумах не нашел ответ 

если тут есть ктото кто овладел достаточным знанием php codeigniter прошу помогите

уже 3 пост пишу.....

дело в том что у меня таблица фильмов и сериалов по одтельности и называються movie,serial так вот на главной странице виводит информаци из movie и serial тоесть показывает по 8 фильмов и сериалов но вот когда создал  страницу просмотра фильмов фильмы открываються но сериалы нет и также станица со списком фильмов создается где вывожу список 15 фильмов а страница с сериалами не работает при просмотре сериала и и при виводе страницы сериалов ошибка.ниже вставлю код и еще раз прошу помогите


Models:
films_model:
<?php

class Films_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function getFilms($slug = FALSE, $limit, $type = 1) {
        if($slug === FALSE) {
            $query = $this->db
                ->where('category_id', $type)
                ->order_by('add_date')
                ->limit($limit)
                ->get('movie');

            return $query->result_array();    
        }

        $query = $this->db->get_where('movie', array('slug'=>$slug));
        return $query->row_array();
    }

    public function getFilmsByRating($limit) {
        $query = $this->db
            ->order_by('rating', 'desc')
            ->where('category_id', 1)
            ->where('rating>', 0)
            ->limit($limit)
            ->get('movie');

        return $query->result_array();    
    }
}

serials_model:
<?php

class Serials_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }
    
    public function getSerials($slug = FALSE, $limit, $type = 2) {
        if($slug === FALSE) {
            $query = $this->db
                ->where('category_id', $type)
                ->order_by('add_date', 'desc')
                ->limit($limit)
                ->get('serial');

            return $query->result_array();
        }

        $query = $this->db->get_where('serial', array('slug'=>$slug));
        return $query->row_array();
    }

}

controllers:
movies:
<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Movies extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function type($slug = NULL) {
        $this->data['movie_data'] = NULL;

        if($slug == "films") {
            $this->data['title'] = "Movies";
            $this->data['movie_data'] = $this->films_model->getFilms(false, 10, 1);
        }

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

    public function view($slug = NULL) {

        $movie_slug = $this->films_model->getFilms($slug, false, false);

        if(empty($movie_slug)) {
            show_404();
        }

        $this->data['title'] = $movie_slug['name'];
        $this->data['year'] = $movie_slug['year'];
        $this->data['rating'] = $movie_slug['rating'];
        $this->data['descriptions_movie'] = $movie_slug['descriptions'];
        $this->data['player_code'] = $movie_slug['player_code'];
        $this->data['director'] = $movie_slug['director'];

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


}
serials:
<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Serials extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }


    public function view($slug = NULL) {

        $serial_slug = $this->serials_model->getSerials($slug, false, false);

        if(empty($serial_slug)) {
            show_404();
        }

        $this->data['title'] = $serial_slug['name'];
        $this->data['year'] = $serial_slug['year'];
        $this->data['rating'] = $serial_slug['rating'];
        $this->data['descriptions_movie'] = $serial_slug['descriptions'];
        $this->data['player_code'] = $serial_slug['player_code'];
        $this->data['director'] = $serial_slug['director'];

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


}
main:
<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Main extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->data['title'] = "Main Page";

        $this->load->model('films_model');
        $this->data['movie'] = $this->films_model->getFilms(false, 8, 1);


        $this->load->model('serials_model');
        $this->data['serial'] = $this->serials_model->getSerials(false, 8, 2);

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


my_controller:
<?php

class MY_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();

        $this->data['title'] = "Movie World - All Best in One Place";

        $this->load->model('news_model');
        $this->data['news'] = $this->news_model->getNews();

        $this->load->model('films_model');
        $this->data['films'] = $this->films_model->getFilmsByRating(10);


    }

}


route:
$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['movies/(:any)'] = 'movies/view/$1';
$route['serials/(:any)'] = 'serials/view/$1';


$route['news'] = 'news';
$route['news/create'] = 'news/create';
$route['news/edit'] = 'news/edit';
$route['news/delete'] = 'news/delete';
$route['news/(:any)'] = 'news/view/$1';

Ошибка которую выдает при просмотре сериалов
A PHP Error was encountered
Severity: Notice

Message: Undefined property: Serials::$serials_model

Filename: controllers/Serials.php

Line Number: 14

Backtrace:

File: C:\xampp\htdocs\movieworld\application\controllers\Serials.php
Line: 14
Function: _error_handler

File: C:\xampp\htdocs\movieworld\index.php
Line: 315
Function: require_once

An uncaught Exception was encountered
Type: Error

Message: Call to a member function getSerials() on null

Filename: C:\xampp\htdocs\movieworld\application\controllers\Serials.php

Line Number: 14

Backtrace:

File: C:\xampp\htdocs\movieworld\index.php
Line: 315
Function: require_once

codeigniter

7 ответов

0
попробовал прописать в my controller:
<?php

class MY_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();

        $this->data['title'] = "Movie World - All Best in One Place";

        $this->load->model('news_model');
        $this->data['news'] = $this->news_model->getNews();

        $this->load->model('films_model');
        $this->data['films'] = $this->films_model->getFilmsByRating(10);

        $this->load->model('serials_model');
        $this->data['serials'] = $this->serials_model->getSerials();


    }

}

теперь такая ошибка:
An uncaught Exception was encountered
Type: ArgumentCountError

Message: Too few arguments to function Serials_model::getSerials(), 0 passed in C:\xampp\htdocs\movieworld\application\core\MY_Controller.php on line 17 and at least 2 expected

Filename: C:\xampp\htdocs\movieworld\application\models\Serials_model.php

Line Number: 9

Backtrace:

File: C:\xampp\htdocs\movieworld\application\core\MY_Controller.php
Line: 17
Function: getSerials

File: C:\xampp\htdocs\movieworld\application\controllers\Main.php
Line: 8
Function: __construct

File: C:\xampp\htdocs\movieworld\index.php
Line: 315
Function: require_once
0

и как это исправить?друг помоги тебе место в раю гарантировано будет

что куда и как прописать?

0

а можно тебе скинуть весь код на почту?посмотри что не так в нем в целом

и подскажешь что да как ато ваще застрял на одном месте

0

Друзья, а зачем создавать еще одну модель, если все берем из одной таблицы и только меняем категорию id в $type?

0

1. В таблице serials (в базе данных) тип точно 2 стоит у category_id?

  public function getSerials($slug = FALSE, $limit, $type = 2) {
        if($slug === FALSE) {
            $query = $this->db
                ->where('category_id', $type)
                ->order_by('add_date', 'desc')
                ->limit($limit)
                ->get('serial');

            return $query->result_array();
        }

        $query = $this->db->get_where('serial', array('slug'=>$slug));
        return $query->row_array();
    }

2. Временно попробуй заменить:

$this->data['serial'] = $this->serials_model->getSerials(false, 8, 2); 

на 

$this->data['serial'] = $this->films_model->getFilms(false, 8, 1); 

Работает?

3. В class MY_Controller extends CI_Controller { есть загрузка моделей:

$this->load->model('news_model');
$this->load->model('films_model');

но нет загрузки модели для $this->load->model('serials_model');

---

В общем попробуй сначала просто вместо 

$this->data['serial'] = $this->serials_model->getSerials(false, 8, 2);

писать 

$this->data['serial'] = $this->films_model->getFilms(false, 8, 1);

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

0

Ошибка потому что нет у метода аргументов при вызове, а должны быть:

getSerials($slug = FALSE, $limit, $type = 2) - так в модели же написано.

0
и как это исправить?

Можно написать запрос как в одном из контроллеров:

$this->data['serial'] = $this->serials_model->getSerials(false, 8, 2);

Если пока нет понимания, как вызывать вызывать методы и что такое аргументы у методов, лучше пересмотреть в php курсе про ООП, функции и методы уроки, дальше только сложнее будет.

Здесь скорее не в этом дело (не в том, что нет в MY_Controller нет загрузки этой модели). Я писал "2. Временно попробуй заменить:" - пробовал?

Sign up or Log in to write an answer