Добавления своего действия (Таска) с сообщением и редиректом

22.01.2016

XLM форма, модель и контроллер, демонстрирующие расширение компонента Joomla.

Например, форма

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

  }


Категории: CMS Joomla 3.X, Joomla
Яндекс.Метрика