Front controller-view for advanced module
So. I've build advanced module with a few simple modules models inside. Admin works fine. I'm very happy with the elegant relationship model!
Now I need to have some controllers for frontend. I have success with a traditional CI controllers, but want to put them in a module directory. I have looking around how is build the blog module, but looking strange for me and confusing me.
Is there are simple way to render a views from module controller for front-end.
Also I want to use a layouts that is in my main codeigniter application view folder.
In forum found found some examples using fuel_page class. But in version 1.4 there is no fuel_page class (or my mistake?).
And second question - how to use fuel_base_model to retriving record(s) (again for front end). For example:
I have a "course" that has many "teachers" and belongs to "member". What is the right way to get the record with relationships records from model and populate in the view.
Sorry for tedious question, but can't find the examples.
Comments
1. Make base module controller library.
2. Include in front module controller and extend it.
3. In base controller make some method to render views:
function _render($view, $vars = array(), $return = FALSE, $layout = '') { //get body for view in layout $vars['body'] = $this->load->module_view({MODULE_NAME}_FOLDER, $view, $vars, TRUE); // get any global variables for the headers and footers $uri_path = trim($this->fuel->{MODULE_NAME}->config('uri'), '/'); $_vars = $this->fuel->pagevars->retrieve($uri_path); if (is_array($_vars)) { $vars = array_merge($_vars, $vars); } //Set the default layout $layout = (! empty($layout) ) ? $layout : 'main'; $output = $this->load->view('_layouts/'.$layout, $vars, TRUE); $this->load->module_library(FUEL_FOLDER, 'fuel_pages'); $this->fuel_pages->initialize(); $output = $this->fuel_page->fuelify($output); if ($return) { return $output; } else { $this->output->set_output($output); } }
4. Call the _render method instead of $this->load->view() after collect the vars from model(s).
Maybe is good idea to put some base controller in module generator.
So far so good... now - how to use models and magic methods
.
$this->load->module_view('module_name', 'view_file', $vars);
For the magic methods, you've probably already seen this documentation, but if not, here it is:
http://docs.getfuelcms.com/general/models#magic_methods
http://docs.getfuelcms.com/general/models#formatters