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; } }