Я новичок в Joomla, я хочу знать, как контроллер Joomla передает данные модели, модели для контроллера и контроллера для просмотра. Хотя это может быть глупый вопрос, я действительно пытался найти ответ. Надеюсь, я смогу получить помощь из семейства stackoverflow.
Контроллер выбирает переменную вида в URL-адресе и использует их, чтобы определить, какое представление необходимо использовать. Затем он устанавливает вид, который будет использоваться. Затем представление вызывает модель для получения требуемых данных, а затем передает ее на отображаемый tmpl.
Ниже приведена простая настройка того, как все это работает:
Компоненты / com_test / controller.php
class TestController extends JController { // default view function display() { // gets the variable some_var if it was posted or passed view GET. $var = JRequest::getVar( 'some_var' ); // sets the view to someview.html.php $view = & $this->getView( 'someview', 'html' ); // sets the template to someview.php $viewLayout = JRequest::getVar( 'tmpl', 'someviewtmpl' ); // assigns the right model (someview.php) to the view if ($model = & $this->getModel( 'someview' )) $view->setModel( $model, true ); // tell the view which tmpl to use $view->setLayout( $viewLayout ); // go off to the view and call the displaySomeView() method, also pass in $var variable $view->displaySomeView( $var ); } }
компоненты / com_test / просмотров / someview / view.html.php
class EatViewSomeView extends JView { function displaySomeView($var) { // fetch the model assigned to this view by the controller $model = $this->getModel(); // use the model to get the data we want to use on the frontend tmpl $data = $model->getSomeInfo($var); // assign model results to view tmpl $this->assignRef( 'data', $data ); // call the parent class constructor in order to display the tmpl parent::display(); } }
компоненты / com_test / модель / someview.php
class EatModelSomeView extends JModel { // fetch the info from the database function getSomeInfo($var) { // get the database object $db = $this->getDBO(); // run this query $db->setQuery(" SELECT * FROM #__some_table WHERE column=$var "); // return the results as an array of objects which represent each row in the results set from mysql select return $db->loadObjectList(); } }
компоненты / com_test / просмотров / someview / TMPL / someviewtmpl.php
// loop through the results passed to us in the tmpl foreach($this->data as $data) { // each step here is a row and we can access the data in this row for each column by // using $data->[col_name] where [col_name] is the name of the column you have in your db echo $data->column_name; }
ознакомьтесь с этим сайтом для подробного руководства о том, как создавать компоненты и модули с помощью MVC Joomla. Надеюсь, поможет
Также обратитесь к официальному документу joomla doc для подробного руководства о том, как создавать компоненты и модули с помощью MVC Joomla. Надеюсь, что это поможет http://docs.joomla.org/Developing_a_Model-View-Controller_Component/1.5/Introduction