【问题标题】:Loading Php markdown as helper with codeigniter使用 codeigniter 加载 Php markdown 作为助手
【发布时间】:2013-09-19 18:22:36
【问题描述】:

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

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

我已经用这个语句调用了defaultTransform函数()

$note_body=defaultTransform($note_body);

我收到此错误。

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

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

【问题讨论】:

    标签: php codeigniter markdown


    【解决方案1】:

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

    fgrep defaultTransform -r -n *

    【讨论】:

      【解决方案2】:

      我不熟悉 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);
      

      【讨论】:

      • 感谢您的回复。是的,Mardown.php 是面向对象的,所以我想这就是它起作用的原因。
      【解决方案3】:

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

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

      【讨论】:

      • 感谢您的回复。实际上我也尝试过,但正如 George Brighton 所说,这是由于 Markdown.php 的面向对象特性。无论如何谢谢!
      【解决方案4】:

      我最终通过创建一个扩展 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);
      

      【讨论】:

        猜你喜欢
        • 2012-12-30
        • 1970-01-01
        • 2015-05-20
        • 2011-01-12
        • 1970-01-01
        • 2011-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多