BeaverusIV
BeaverusIV

Reputation: 1008

Joomla Component not saving data

I have a component that used to work (Without setting HTML tags to the description) and now after trying to get the HTML formatting to work it won't save.

com_lot\views\lot\tmpl\form.php:

<?php defined('_JEXEC') or die('Restricted access');
$document =& JFactory::getDocument();
$document->addScript('includes/js/joomla.javascript.js');
require_once(JPATH_ADMINISTRATOR .DS. 'components' .DS. 'com_jce' .DS. 'helpers' .DS. 'browser.php');
?>
<form action="index.php" method="post" name="adminForm" id="adminForm">
<script language="javascript" type="text/javascript">
function submitbutton(pressbutton) {
   var form = document.adminForm;
   if (pressbutton == 'cancel') {
      submitform( pressbutton );
      return;
   }

   <?php
      $editor =& JFactory::getEditor();
      echo $editor->save( 'description' );
   ?>
   submitform(pressbutton);
}
</script>
...
      <tr>
         <td width="100" align="right" class="key">
            <label for="description">
               <?php echo JText::_( 'Description' ); ?>:
            </label>
         </td>
         <td>
            <?php
               $editor =& JFactory::getEditor();
               echo $editor->display('description', $this->lotdata->description, '550', '400', '60', '20', false);
            ?>
         </td>
      </tr>
...
<input type="hidden" name="option" value="com_lot" />
<input type="hidden" name="lotid" value="<?php echo $this->lotdata->lotid; ?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="controller" value="lot" />

<?php echo JHTML::_( 'form.token' ); ?>
<button type="button" onclick="submitbutton('save')"><?php echo JText::_('Save') ?></button>
<button type="button" onclick="submitbutton('cancel')"><?php echo JText::_('Cancel') ?></button>
</form>

com_lot\models\lot.php:

   function store($data)
{
   // get the table
   $row =& $this->getTable();

   // Bind the form fields to the hello table
   if (!$row->bind($data)) {
      $this->setError($this->_db->getErrorMsg());
      return false;
   }

   // Make sure the hello record is valid
   if (!$row->check()) {
      $this->setError($this->_db->getErrorMsg());
      return false;
   }

   // Store the web link table to the database
   if (!$row->store()) {
      $this->setError( $row->getErrorMsg() );
      return false;
   }

   return true;         
}

   function save()
   {
   // Check for request forgeries
   JRequest::checkToken() or jexit( 'Invalid Token' );

   // get the model
   $model =& $this->getModel();

   //get data from request
   $post = JRequest::get('post');
   $post['description'] = JRequest::getVar('description', '', 'post', 'string', JREQUEST_ALLOWRAW);

   // let the model save it
   if ($model->store($post)) {
      $message = JText::_('Success');
   } else {
      $message = JText::_('Error while saving');
      $message .= ' ['.$model->getError().'] ';
   }
   $this->setRedirect('index.php?option=com_lot', $message);
}

Any help appreciated.

Edit: I have seen stuff about JForms and having XML files... is this applicable? I haven't found anywhere that says what they're used for, just what types there are...

Upvotes: 3

Views: 4837

Answers (1)

BeaverusIV
BeaverusIV

Reputation: 1008

I found the problem (once I'd cleaned up the code a bit) was that in the article I was following (http://docs.joomla.org/How_to_use_the_editor_in_a_component) missed changing store() to store($data).

Because the pages redirect etc it doesn't die and error out. Thanks to for Jan for your help.

Upvotes: 6

Related Questions