1

我正在尝试将 Php Markdown 与 Codeigniter 一起使用。
我将文件“Markdown.php”保存为 markdown_helper.php。我已将它放在应用程序/帮助程序目录中。
我已使用此语句在我的控制器中加载帮助程序。

$this->load->helper('markdown');

我已使用此语句调用 defaultTransform 函数()

$note_body=defaultTransform($note_body);

我收到此错误。

致命错误:调用未定义的函数 defaultTransform()

加载帮助程序时我做错了吗?

4

4 回答 4

1

我对 Codeigniter 不熟悉,但看起来 PHP Markdown 不符合其将“帮助器”定义为“简单、过程函数”的集合的定义——Markdown.php 是面向对象的。请参阅此处的文档。

如果将 Codeigniter 和 PHP Markdown 分开会发生什么?尝试包括markdown_helper.php手动使用

require_once(APPPATH . 'applications/helpers/markdown_helper.php');
use \Michelf\Markdown;

然后像这样使用它:

$note_body = Markdown::defaultTransform($note_body);
于 2013-09-15T15:56:15.023 回答
1

我最终通过创建一个扩展 Markdown 类的瘦库来做到这一点。

来自:http: //blog.gauntface.co.uk/2014/03/17/codeigniter-markdown-libraries-hell/

将来自 Michel Fortin 的 markdown 文件放入 third_party 目录,在我的例子中,我创建了一个名为 Md 的目录并将 php 文件移动到该目录的根目录,然后在 library 目录中创建一个名为 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 Michelf\Markdown {
    function __construct($params = array()) {
        parent::__construct();
    }
}

然后导入并使用它:

$this->load->library('md');
$html = $this->md->defaultTransform($markdown);
于 2014-03-17T20:37:15.213 回答
0

如果您使用 Linux,请尝试运行以查找包含 defaultTransform 函数的文件,并在您的代码文件中包含:

fgrep defaultTransform -r -n *

于 2013-09-15T15:05:59.823 回答
0

使用$this->load->helper('markdown')而不是$this->load->helper('markdown_helper').

CI 自动附加_helper.php文件名的一部分。

于 2013-09-15T16:40:42.427 回答