2013-08-18 3 views
1

Так им пытаются создать свой первый компонент и для этого Айв создал следующий контроллер:получение экземпляра контроллеров Joomla

<?php 
defined('_JEXEC') or die ('Access denied!'); 
/** 
* Created by JetBrains PhpStorm. 
* User: Marc 
* Date: 18-08-13 
* Time: 02:18 
* To change this template use File | Settings | File Templates. 
*/ 
jimport('joomla.application.component.controller'); 
class MyCompController implements JController{ 

    function create(){ 
     echo "Welcome to create"; 
    } 

    function delete(){ 
     $id =JRequest::getVar('id'); 
     echo "you want to delete "-$id; 
    } 

} 

Теперь я не очень хорошо знаком с Joomla и мог только найти документацию для 2.5, где

$controller = JController::getInstance('MyComp'); 

был подходящим способом получить экземпляр вашего контроллера.

я смотрел на интерфейс и JController interface не предоставляет метод GetInstance из-за этого я попробовал:

$controller = JController::getApplication('MyComp'); 

Но не повезло.

Итак, как вы получаете контроллер?

ответ

1

Я не совсем уверен, что вы пытаетесь выполнить. Но я думаю, что вам нужно в Joomla 2.5 tutorial.

У вас должен быть файл MyComp.php, как он определяет HelloWorld.php по вышеуказанной ссылке.

Все. Затем, когда вы создаете представление с некоторым кодом, скажем, форма:

<form action='index.php?option=com_MyComp&task=delete'> 
.... 
</form> 

Это будет доступ к коду вашего контроллера для функции удаления.

С другой стороны, может быть проще создать шаблон, необходимый для вашего компонента, с помощью Component Creator. Хороший бесплатный онлайн-инструмент, который создает шаблон, все дети используют его.

3

У вашего компонента есть сценарий начальной загрузки с тем же именем, что и ваш компонент. В вашем случае это будет mycomp.php. Этот файл включен Joomla, всякий раз, когда возникает запрос с option=mycomp. Там вы настраиваете и вызываете свой контроллер:

$controller = new MyCompController; 
$controller->execute(JFactory::getApplication()->input->getCmd('task')); 
$controller->redirect(); 
+0

К сожалению, это не сработало –