我有一个(恕我直言)关于编写 Typo3 扩展(版本 4.5 LTS)的小菜鸟问题。我尝试的只是组成一个小的 MVC 类模式,其中包含一个小的 curl 语句来从远程位置检索信息。原则上,MVC 类已经实现,我只想将它们包含到我的插件扩展的主程序中。这就是我猜想的工作:
class tx_uniklstudgangext2013_pi1 extends tslib_pibase {
public $prefixId = 'tx_uniklstudgangext2013_pi1'; // Same as class name
public $scriptRelPath = 'pi1/class.tx_uniklstudgangext2013_pi1.php'; // Path to this script relative to the extension dir.
public $extKey = 'uniklstudgangext2013'; // The extension key.
public $pi_checkCHash = TRUE;
/**
* The main method of the Plugin.
*
* @param string $content The Plugin content
* @param array $conf The Plugin configuration
* @return string The content that is displayed on the website
*/
public function main($content, array $conf) {
$this->conf = $conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
$view = t3lib_div::makeInstance('tx_uniklstudgangext2013_pi1_view');
// !HERE! : also tried with new(), since I don't want to deal with XCLASS here...
// this works: $content = "<p>Hello world!</p>";...the line below doesn't...
$content = $view->getCourseInfoOutput();
/*'
<strong>This is a few paragraphs:</strong><br />
<p>This is line 1</p>
<p>This is line 2</p>
<h3>This is a form:</h3>
<form action="' . $this->pi_getPageLink($GLOBALS['TSFE']->id) . '" method="POST">
<input type="text" name="' . $this->prefixId . '[input_field]" value="' . htmlspecialchars($this->piVars['input_field']) . '" />
<input type="submit" name="' . $this->prefixId . '[submit_button]" value="' . htmlspecialchars($this->pi_getLL('submit_button_label')) . '" />
</form>
<br />
<p>You can click here to ' . $this->pi_linkToPage('get to this page again', $GLOBALS['TSFE']->id) . '</p>
';
*/
return $this->pi_wrapInBaseClass($content);
}
}
我是 Typo3 编程的初学者,我想到目前为止我还没有想到一百个隐含的问题(只是不知道 Typo3 是如何隐式运行的)。到目前为止我尝试/做了什么:
- 通过在根模板中设置它来全局禁用模板缓存。
将所有新语句转换为 makeInstance();不想让这个连接搞砸我所有的 MVC 代码,我重写了被调用的方法 $view->getCourseInfoOutput()
public function getCourseInfoOutput() { return "hello world!"; //return $this->_model->getTemplateByCourseId(5); }
这将我引向下一个问题:它只是没有得到你好世界!看来,Typo3 无论如何都抑制了扩展根类之外的类的返回值
- 当我将所有代码依次放入 main 方法时,效果很好
谁能帮助我:/我承认,我完全误解了扩展的工作原理的可能性很小,但是,正如我所说,我只想让我的代码在扩展中运行并简单地返回一个值。这真的那么难吗?
提前问候和谢谢!