Creating content using JTableContent
From Joomla! Documentation
This article is tagged because it NEEDS REVIEW. You can help the Joomla! Documentation Wiki by contributing to it.
More pages that need help similar to this one are here. NOTE-If you feel the need is satistified, please remove this notice.
Contents
Introduction
JTableContent is the preferred method to add content to the database rather than with direct queries. JTableContent has many benefits which include simplifying the methods to create, read, update, and delete content.
The Object
Using JTableContent begins by creating a new instance
$article = JTable::getInstance('content');
We can now define the properties of this object that our new article will have.
Properties of the object
Each property of the newly created object corresponds with a field in the database. For example, our article may be defined as
$article->title = 'This is my super cool title!';
$article->alias = JFilterOutput::stringURLSafe('This is my super cool title!');
$article->introtext = '<p>This is my super cool article!</p>';
$article->catid = 9;
$article->created = JFactory::getDate()->toSQL();;
$article->created_by_alias = 'Super User';
$article->state = 1;
$article->access = 1;
$article->metadata = '{"page_title":"","author":"","robots":""}';
$article->language = '*';
To keep this example simple, we have used only 10 properties out of the 30. To explore other properties and their data types look-up the #__content table in your database.
Data Validation
JTableContent provides a data validation method, JTableContent::check. Using this method, we can validate our data, or raise a notice if it fails.
if (!$article->check()) {
JError::raiseNotice(500, $article->getError());
return FALSE;
}
Saving the article
Finally, we use JTableContent::store to save the article.
if (!$article->store(TRUE)) {
JError::raiseNotice(500, $article->getError());
return FALSE;
}
Version Note
JTableContent is not autoloaded prior to Joomla! version 3.0, so it needs to included.
JTable::addIncludePath(JPATH_PLATFORM . 'joomla/database/table');
Complete Example
if (version_compare(JVERSION, '3.0', 'lt')) {
JTable::addIncludePath(JPATH_PLATFORM . 'joomla/database/table');
}
$article = JTable::getInstance('content');
$article->title = 'This is my super cool title!';
$article->alias = JFilterOutput::stringURLSafe('This is my super cool title!');
$article->introtext = '<p>This is my super cool article!</p>';
$article->catid = 9;
$article->created = JFactory::getDate()->toSQL();;
$article->created_by_alias = 'Super User';
$article->state = 1;
$article->access = 1;
$article->metadata = '{"page_title":"","author":"","robots":""}';
$article->language = '*';
// Check to make sure our data is valid, raise notice if it's not.
if (!$article->check()) {
JError::raiseNotice(500, $article->getError());
return FALSE;
}
// Now store the article, raise notice if it doesn't get stored.
if (!$article->store(TRUE)) {
JError::raiseNotice(500, $article->getError());
return FALSE;
}