Я пытаюсь сделать модуль CRUD в Codeigniter HMVC, но мне кажется, что что-то не хватает в процессе. Вот с чем я сталкиваюсь.
У меня есть модуль новостей, который имеет функцию управления
function manage(){
$grid = Modules::run('Crud/renderGrid', 'News' , 'News management');
}
Функция рендеринга сетки
function renderGrid($module , $page_title){
$data['page_title'] = $page_title; //Dynamic
$data['module'] = $module;
$data['view_module'] = 'Crud';
$data['displayfields'] = Modules::run($module.'/get_displayfields');
$data['key'] = Modules::run($module.'/get_key');
$data['rows'] = Modules::run($module.'/get' , $data['key']);
$data['view_file'] = 'manage';
$this->load->module('dashboard');
$this->dashboard->show_dashboard($data);
}
Здесь функция show_dashboard просто загружает макет шаблона с желаемым представлением в нем.
function show_dashboard($data = NULL){
if($data == NULL){
$data['view_file'] = "manage";
$data['page_title'] = 'Sigma Web Solutions';
}
$this->load->module('templates');
$this->templates->admin($data);
}
Templates-> админ
function admin($data){
$this->load->view('admin' , $data);
}
Вид (без заголовка и нижнего колонтитула)
<?php
if (!isset($view_file)) {
$view_file = "";
}
if (!isset($view_module)) {
$module = $this->uri->segment(1);
}
if (($view_module!="") && ($view_file!="")) {
$path = $view_module."/".$view_file;
$this->load->view($path);
}
?>
Теперь, когда я пытаюсь url news / manage, он дает мне пустую страницу без исходного кода. Но когда я пытаюсь что-то вроде
crud / renderGrid / news / sometitle / работает просто отлично.
Пожалуйста, укажите, что я здесь упустил. Благодарю.
Рабочее решение:
Благодаря волку я добавил маршрут
$ route [‘managenews’] = ‘crud / renderGrid / news / News’;
И это работает как шарм. Но зачем мне здесь маршрут? Разве это не должно работать? И это означает, что для каждого модуля мне нужно иметь 4 записи в моем файле маршрута для работы системы CRUD. Кто-нибудь может предложить лучший метод?
Задача ещё не решена.
Других решений пока нет …