使用Codeigniter 1.7.2和Dwoo实施CMS时出现问题。我使用Phil Sturgeon Dwoo库。我的问题是我希望用户从管理面板创建模板,这意味着所有模板都将存储到数据库中,包括所有Dwoo变量和函数。

  • 是否可以从数据库加载dwoo模板?
  • 如何从数据库解析dwoo变量或函数?我试图从数据库中加载包含dwoo var和其中的函数的内容,并且尝试使用dwoo eval()函数和phil urge鱼string_parse()进行评估,但仍然没有运气。

  • ,例如:

    我的 Controller
    $data['header'] = "<h1>{$header}</h1>"; --> this could be loaded from database
    
    $this->parser->parse('header',$data);
    

    我的观点
    {$header}
    

    这是错误消息:
    <h4>A PHP Error was encountered</h4>
    
    <p>Severity: Notice</p>
    <p>Message:  Undefined index:  header_title</p>
    <p>Filename: compiled/805659ab5e619e094cac7deb9c8cbfb5.d17.php</p>
    <p>Line Number: 11</p>
    

    header_title是从数据库加载的dwoo变量。

    谢谢,

    最佳答案

    绝对可以这样做,但是出于性能方面的考虑,即使模板是由用户编辑的,将模板存储为文件系统中的文件可能也会更快。如果您很聪明地使用文件命名,则可以避免对数据库的大多数攻击。

    无论如何,如果您真的想对数据库进行操作,则应该可以执行以下操作:

    // rendering the header
    $template = '<h1>{$header}</h1>'; // loaded from db, don't use double-quotes for examples or $header will be replaced by nothing
    $data = array('header' => 'Hello'); // loaded from db as well I assume
    $headerOutput = $this->parser->parse_string($template, $data, true); // true makes it return the output
    
    // now rendering the full page (if needed?)
    $data = array('header' => $headerOutput);
    $this->parser->parse('header', $data); // no 'true', so goes straight to output
    

    然后,该 View 将包含{$header},并且标题模板的输出将传递到该变量。

    现在,我不确定CI的工作方式,因此最好只输出第一个模板的结果并完全跳过第二个模板的结果,但是我将留给您自己。

    关于templates - Codeigniter + Dwoo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4525288/

    10-10 08:17