JTable - has created a Class that allows you to access and manipulate data in a database table easier. For fundamental processes such as the retrieval of records. Emptying the table and Reducing the work in the Model into it. for use JTable in the Component of us also have the controllers models views must create the tables added for storing class files of JTable named class is similar to the naming controllers models views. Component is a name followed by the word Table and closed with a filename such as tables, create a file in a folder com_helloworld. hello.php HelloworldTableHello and class names are assigned to the class JTable extends and construct the building
com_helloworld/tables/hello.php
inside the hello.php file insert the code below
<?php
class HelloworldTableHello extends JTable
{
public function __construct(&$db)
{
parent::__construct('#__tablename', 'id', $db);
{
}
Now we need to enhance and adjust the codes on Controllers folder
In building a controller would normally extends from class JControllerLegacy. In fact, we also have a class that extends another 2 class. JControllerAdmin controller is ideal for managing list of data items.
If we select extends from the top of a class, a function that allows you to create custom diminished. Save time coding
Sample controller (can add, edit) using a 2 function
Modify the codes on the file php under controllers folder
public function display($cachable = false, $urlparams = array())
{
$task = JRequest::getVar('task');
if($task == 'add' || $task == 'edit') {
$view = $this->getView();
$view->setModel($this->getModel(), true);
} else {
$view = $this->getView(ucfirst($this->controller).'s');
$view->setModel($this->getModel(ucfirst($this->controller).'s'), true);
}
$view->display();
}
for recording
<?php
public function Save ()
{
// prevent attacks from outside your system.
JSession :: CheckToken () or die( JText :: _ ( 'JINVALID_TOKEN' ));
// run the Object Model
$model = $this->getModel();
// a value stored in variable form. $ Data
$data = $this->input->post->get('jform', array(), 'array');
if (!$model->save($data))
{
// if he fails the error
$this->setError(JText::sprintf('Failed', $model->getError()));
$this->setMessage($this->getError(), 'error');
// moved to a statement.
$this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&c=example'
)
);
return false ;
}
// message if He achieved
$this->setMessage(JText::_('Success'));
// move to the registration statement.
$this->setRedirect(
JRoute::_('index.php?option=' . $this->option . '&c=example'
)
);
return true;
}
}
the creation of a model usually created 2 model. First it retrieves the page from the list extends class JModelList. The second extends class information in the form of JModelAdmin JModelForm JModelLegacy which normally takes the form of JModelLegacy but if we had to switch to using xml JModelForm but from those used JModelAdmin be super useful.
Modify the php file under the Models folder
<? PHP defined
( '_JEXEC' ) or Die ();
Class ExampleModelExample extends JModelAdmin
{
// extract data from xml file to create a form.
public function getForm($data = array(), $loadData = true)
{
$form = $this->loadForm('com_example.example', 'example', array('control' => 'jform', 'load_data' => $loadData));
return $form;
}
// keep critical values for the lead. In another function, such as the id of the table.
protected function populateState()
{
$cid = JRequest::getVar('cid');
$this->setState('id', $cid[0]);
}
// out the chart to the form.
protected function loadFormData()
{
$data = JFactory::getApplication()->getUserState('com_example.edit.example', array());
if (empty($data)) {
$data = $this->getItem();
}
return $data;
}
// call the JTable Object
public function getTable($name = 'Example', $prefix = 'ExampleTable', $options = array())
{
return parent::getTable($name, $prefix, $options);
}
}