2013-07-27 16 views
5

私はすべてを試したようです。私は新しいコンポーネントを作成する方法を学びたいと考えています。現在、私のフォルダ構造は次のようになっています(コンポーネントがインストールされていることに注意してください)。未定義のメソッドを呼び出すJController :: getInstance()

これは私のフォルダ構造の写真です:私はそれはirelevant見つかりましたが、あなたがいただきました!それらの内部に表示する必要がある場合は私に知らせてくださいしてくださいので

enter image description here

アイブ氏はそれのいくつかを閉じました。

上記のとおり、コンポーネントは問題なくインストールされます。私はそれにアクセスしようとすると、しかし、私は次のエラーを取得する:

Fatal error: Call to undefined method JController::getInstance() in /home/marcrasm/public_html/Joomla/administrator/components/com_helloworld/helloworld.php on line 13 

今ではこの1つであるために参照のうえされたファイル:

<?php 
defined('_JEXEC') or die ('Restricted access'); 

jimport('joomla.application.component.controller'); 

$doc = JFactory::getDocument(); 
$doc->addScript("/components/com_helloworld/js/jquery.js"); 
$doc->addScript("/components/com_helloworld/js/com_helloworld_script.js"); 
$doc->addStyleSheet("/components/com_helloworld/css/com_helloworld_layout.css"); 

// gets the instance of the controller 
// Get an instance of the controller prefixed by HelloWorld 
$controller = JController::getInstance('HelloWorld'); 

// Perform the Request task 
$input = JFactory::getApplication()->input; 
$controller->execute($input->getCmd('task')); 

// Redirect if set by the controller 
$controller->redirect(); 

が、私はそれを伝えるのは難しいことができます知っているが、誰もが知っています何が問題なの?

答えて

18

を参照し3.X

ではJoomlaのバージョン

をご確認くださいそれではあなたはJControllから該当するコードを追加してください可能性)が、Joomlaのドキュメントをよればextededクラスがそのメソッド

+0

私は2つのウェブサイト2.5と1つの3.0を持っていた。だから私は2.5で何かを修正するために戻ったときに私は3.0の週のように働いていた..やっぱり!クラッシュ! :P – themis

0

JControllerには、getInstance()という静的メソッドがないというエラーメッセージが表示されます。

+0

うん、私は知っていますあなたの質問に? –

+0

を持っている。2.Xで

$controller = JControllerLegacy::getInstance('HelloWorld'); 

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

+0

erm?そこからJcontrollerはJoomlaの一部ではないのですか?私がそれをインポートするときのように –

5

現在のバージョンは言わないが、新しいMVCを使用してビルドしている場合を除きJ3のJControllerLegacyが必要な場合があります。 JControllerはのgetInstance()メソッドを持っていませんが、JControllerLegacyはgithub.com/joomla/joomla-cms/blob/master/libraries/joomla/controller

関連する問題