0

Zend Frameworkでテーブルビューヘルパーを作成しようとしています。モデルの配列を取得し、モデルのプロパティを表示するhtmlテーブルを生成します。

ユーザーは列を追加して、更新、モデルの削除などの操作を表示できます。

したがって、ユーザーはそのような文字列を追加できます

  $columnContent =   '<a href=\'update/$item[id]\'>update</a>' ; 

後で評価する文字列をキャッシュするために単純な引用符を使用することに注意してください

私の問題は、後でその文字列をコンテキストで評価する方法はありますか?

だから私はPhpの文字列の""の振る舞いを模倣する必要があります、ありがとう。

何かのようなもの :

//コンテキストでは、$ itemはモデルの配列の行です:

$myVar = evaluatemyString($columnContent);

編集 :

私の場合は機能しないeval関数を探していません(私は思います)。

編集2:

の結果も変数に入れる必要があります。

4

3 に答える 3

0

代わりに「テンプレート」(引用符を使用)を使用してください。intl特にを見てくださいmessageformatter。また、古き良きprintf()機能(sprintf()含むなど)があります

于 2012-04-16T19:59:57.480 に答える
0

PHPのeval関数

eval($columnContent);
于 2012-04-16T19:44:41.813 に答える
0

これは、UTF-8の簡単な安全な文字列補間の例です。正規表現は、次のルールで変数を強制します。

  1. プレフィックスは@
  2. object:property表記(値が連想配列でもある連想配列キー「オブジェクト」を示します)

つまり、次のような変数の代わりに、次のような$item[id] 変数があります。@user:id

<?php

// <a href="update/@user:name">update</a>
//$template = '<a href="update/@user:name">update</a>';

// <a href="update/500">update</a>
$template = '<a href="update/@user:id">update</a>';

// fixture data
$db[499]  = array('user' => array('id' => 499));
$db[500]  = array('user' => array('id' => 500));

// select record w/ ID = 500
$context  = $db[500];

// string interpolation
$merged = preg_replace_callback('/@(?:(?P<object>[^:]+):)(?P<property>[\w][\w\d]*){1}/iu', function($matches) use($context) {
  $object   = $matches['object'];
  $property = $matches['property'];

  return isset($context[$object][$property])
       ? $context[$object][$property]
       : $matches[0];
}, $template);


echo "TEMPLATE: ${template}", PHP_EOL;
echo "MERGED  : ${merged}",   PHP_EOL;
于 2012-04-16T23:49:29.653 に答える