3

Codeigniter 1.7.2 と Dwoo を使用して CMS を実装するときに問題が発生しました。Phil Sturgeon Dwoo ライブラリを使用しています。私の問題は、ユーザーが管理パネルからテンプレートを作成することです。これは、すべてのテンプレートがすべての Dwoo 変数と関数を含むデータベースに保存されることを意味します。私の質問:

  1. データベースから dwoo テンプレートをロードすることは可能ですか?
  2. データベースからdwoo変数または関数を解析するには? dwoo var とその内部の関数が含まれているデータベースからコンテンツをロードしようとしましたが、dwooeval()関数と phil sturgeonを使用して評価を試みましstring_parse()たが、まだ運がありません。

例えば:

私のコントローラー

$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 は DB からロードした dwoo 変数です。

ありがとうございました、

4

1 に答える 1

1

これを行うことは間違いなく可能ですが、パフォーマンス上の理由から、ユーザーが編集した場合でも、テンプレートをファイルとしてファイルシステムに保存する方がおそらく高速です。ファイルの命名に精通している場合は、データベースへのヒットをほとんど回避できます。

とにかく、本当にデータベースでそれをやりたいのなら、次のようにすればうまくいくはずです:

// 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

ビューには含ま{$header}れ、ヘッダー テンプレートからの出力がその変数に渡されます。

CI の仕組みがわからないので、最初のテンプレートの結果を出力して、2 番目のテンプレートを完全にスキップする方がよいかもしれませんが、それはお任せします。

于 2010-12-25T10:38:44.263 に答える