XLM форма, модель и контроллер, демонстрирующие расширение компонента Joomla.
Добавления своего действия (Таска) с сообщением и редиректом
22.01.2016
Например, форма
form.html (Download)
<form method="POST" action="<?php echo JRoute::_('index.php?option=com_soprojects&view=item');?>">
<textarea name="text" id="cf_text"></textarea>
<br />
<button>Оставить комментарий</button>
<input type="hidden" name="task" value="comment.add_one" />
<input type="hidden" name="id_project" value="<?=$item->id?>" />
</form>Контроллер:
controller.comment.php (Download)
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;
/**
* com_soprojects контроллер.
*/
class SoProjectsControllerComment extends JControllerForm
{
public function add_one()
{
$input = JFactory::getApplication()->input;
$id_project = $input->getCmd('id_project');
if ($id_project)
{
$app = JFactory::getApplication();
$oModel = JModelLegacy::getInstance('Comment', 'soProjectsModel');
$sMsg = $oModel->add_one()?'Ваш комментарий отправлен на проверку.'
:'Внимание! Во время добавления комментария произошла ошибка. Повторите попытку позже.'
;
$app->enqueueMessage(JText::_($sMsg));
$app->redirect(JRoute::_('index.php?option=com_soprojects&view=item&id='.$id_project));
}
else
{
$app->redirect(JRoute::_('index.php?option=com_soprojects'));
}
}
}
Модель:
model.comment.php (Download)
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;
/**
* Модель SoProjects Items.
*/
class SoProjectsModelComment extends JModelAdmin
{
/**
* Добавляем комментарий
*/
public function add_one()
{
$bStored = FALSE;
$input = JFactory::getApplication()->input;
$id_project = $input->getCmd('id_project');
$sText = $input->getString('text', '');
$project = new stdClass();
$project->id = (int) $id_project;
if(SoProjectsCommonHelper::isPartner($project))
{
$user = JFactory::getUser();
$table = $this->getTable();
$table->id_project = $project->id;
$table->date = date("Y-m-d");
$table->id_partner = $user->id;
$table->text = $sText;
$table->published = 0;
if ($table->store())
{
$table->ordering = $table->id;
$table->store();
$bStored = TRUE;
}
}
return $bStored;
}
}