加载 php markdown 作为带有代码点火器的助手



我正在尝试将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部分。

最新更新