Я искал решение о том, как сохранить данные из интерфейса joomla. Я натолкнулся на следующий код для контроллера и модели, который отлично работает. Но я искал стандартную практику, как это делал в задней части, используя jform, jtable и т. Д. В следующем коде (внутри модели) техника сохранения не выглядит такой привлекательной. И я абсолютно не знаю, как реализована проверка на стороне сервера.сохранение данных из joomla frontend
Возможно, это сбивает с толку, поэтому я хотел бы повторить, что в бэкэнд нам даже не нужно писать функцию добавления или сохранения или обновления, она автоматически обрабатывается основными классами с проверкой на стороне клиента и на стороне сервера , Поэтому я искал что-то подобное.
Контроллер
<?php
// No direct access.
defined('_JEXEC') or die;
// Include dependancy of the main controllerform class
jimport('joomla.application.component.controllerform');
class JobsControllerRegistration extends JControllerForm
{
public function getModel($name = 'Registration', $prefix = 'JobsModel', $config = array('ignore_request' => true))
{
return parent::getModel($name, $prefix, array('ignore_request' => false));
}
public function submit()
{
// Check for request forgeries.
JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Initialise variables.
$app = JFactory::getApplication();
$model = $this->getModel('Registration');
// Get the data from the form POST
$data = JRequest::getVar('jform', array(), 'post', 'array');
$form = $model->getForm();
if (!$form) {
JError::raiseError(500, $model->getError());
return false;
}
// Now update the loaded data to the database via a function in the model
$upditem = $model->updItem($data);
// check if ok and display appropriate message. This can also have a redirect if desired.
if ($upditem) {
echo "<h2>Joining with us is successfully saved.</h2>";
} else {
echo "<h2>Joining with us faild.</h2>";
}
return true;
}
}
Модель
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Include dependancy of the main model form
jimport('joomla.application.component.modelform');
// import Joomla modelitem library
jimport('joomla.application.component.modelitem');
// Include dependancy of the dispatcher
jimport('joomla.event.dispatcher');
/**
* HelloWorld Model
*/
class JobsModelRegistration extends JModelForm
{
/**
* @var object item
*/
protected $item;
/**
* Get the data for a new qualification
*/
public function getForm($data = array(), $loadData = true)
{
$app = JFactory::getApplication('site');
// Get the form.
$form = $this->loadForm('com_jobs.registration', 'registration', array('control' => 'jform', 'load_data' => true),true);
if (empty($form)) {
return false;
}
return $form;
}
//Nwely added method for saving data
public function updItem($data)
{
// set the variables from the passed data
$fname = $data['fname'];
$lname = $data['lname'];
$age = $data['age'];
$city = $data['city'];
$telephone = $data['telephone'];
$email = $data['email'];
$comments = $data['comments'];
// set the data into a query to update the record
$db = $this->getDbo();
$query = $db->getQuery(true);
$query->clear();
$db =& JFactory::getDBO();
$query = "INSERT INTO #__joinwithus (`id`, `firstname`, `lastname`, `age`, `city`, `telephone`, `email`, `comment`)
VALUES (NULL,'" . $fname . "','" . $lname . "','" . $age . "','" . $city . "','" . $email . "','" . $telephone . "','" . $comments . "')";
$db->setQuery((string)$query);
if (!$db->query()) {
JError::raiseError(500, $db->getErrorMsg());
return false;
} else {
return true;
}
}
}
Может кто-нибудь любезно указать мне хороший учебник или поделиться мне компонент, который имеет дело с формой в веб-интерфейсе с Joomla 2.5.
ОК после того, как форма подавшее контроллер-> Сохранить() вызывается и в свою очередь, модельно> Save() также вызывается. Но как модель узнает, с какой таблицей базы данных она должна взаимодействовать? Здесь отсутствует JTable – raaman
Если у вас есть jtable in/administrator, вы можете указать путь к этому. Если нет, я думаю, вам нужно написать класс jtable ... – jonasfh
, если бы вы могли поделиться мной, как выглядит ваш контроллер и модель, тогда это было бы оценено @jonasfh cos i до сих пор не могу понять вещи – raaman