我正在尝试将Php Markdown与Codeigniter一起使用。
我将文件"Markdown.php"保存为markdown_helper.php。 我已将其放在应用程序/助手目录中。
我已使用此语句在控制器中加载帮助程序。
$this->加载>助手("降价");
我用这个语句来调用 defaultTransform 函数()
$note_body=defaultTransform($note_body);
我收到此错误。
致命错误:调用未定义的函数 defaultTransform()
我在加载帮助程序时做错了什么吗?
熟悉Codeigniter,但看起来PHP Markdown不符合其"助手"的定义,即"简单,过程函数"的集合 - Markdown.php是面向对象的。请参阅此处的文档。
如果你把Codeigniter和PHP Markdown分开会发生什么?尝试使用 手动包含markdown_helper.php
require_once(APPPATH . 'applications/helpers/markdown_helper.php');
use MichelfMarkdown;
然后像这样使用它:
$note_body = Markdown::defaultTransform($note_body);
我最终通过创建一个扩展 Markdown 类的精简库来做到这一点。
来自: http://blog.gauntface.co.uk/2014/03/17/codeigniter-markdown-libraries-hell/
将Michel Fortin的markdown文件放入third_party目录中,在我的例子中,我创建了一个名为Md的目录并将php文件移动到该目录的根目录中,然后在库目录中创建一个名为md.php的文件。最后在你的 md 中.php输入以下内容:
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
set_include_path(APPPATH . 'third_party/' . PATH_SEPARATOR . get_include_path());
require_once APPPATH . 'third_party/Md/MarkdownInterface.php';
require_once APPPATH . 'third_party/Md/Markdown.php';
class Md extends MichelfMarkdown {
function __construct($params = array()) {
parent::__construct();
}
}
然后导入并使用它:
$this->load->library('md');
$html = $this->md->defaultTransform($markdown);
如果您使用的是 Linux,请尝试运行以查找包含 defaultTransform 函数的文件,并在您的代码文件中包括:
fgrep defaultTransform -r -n *
使用 $this->load->helper('markdown')
而不是 $this->load->helper('markdown_helper')
。
CI 会自动追加文件名的_helper.php
部分。