使用codeigniter加载Php markdown作为帮助程序

时间:2013-09-15 15:02:04

标签: php codeigniter markdown

我正在尝试使用Codeigniter的Php Markdown。我保存了文件" Markdown.php"作为markdown_helper.php。  我已将它放在applications / helpers目录中。 我用这个语句在我的控制器中加载了帮助器。

  

$这 - >负载>辅助('降价&#39);

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

  

$ note_body = defaultTransform($ note_body);

我收到此错误。

  

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

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

4 个答案:

答案 0 :(得分:1)

我不熟悉Codeigniter,但看起来PHP Markdown不适合它的'帮助'的定义,它是'简单的,程序化的函数'的集合--Markdown.php是面向对象的。请参阅文档here

如果将Codeigniter和PHP Markdown分开,会发生什么?尝试使用

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

然后像这样使用它:

$note_body = Markdown::defaultTransform($note_body);

答案 1 :(得分:1)

我最终通过创建一个扩展Markdown类的瘦库来实现这一目标。

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

将Michel Fortin的markdown文件放入third_party目录,在我的例子中,我创建了一个名为Md的目录,并将php文件移动到该目录的根目录,然后在libraries目录中创建一个名为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);

答案 2 :(得分:0)

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

fgrep defaultTransform -r -n *

答案 3 :(得分:0)

使用$this->load->helper('markdown')代替$this->load->helper('markdown_helper')

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