Yii2でWebアプリケーションを開発しています。
テーブルとして表示するために、コントローラーからビューに配列を渡します。配列の各要素は、テーブルの行を表すサブ配列です。ただし、各要素がテーブルセルを表すサブ配列は、文字列と「サブサブ配列」の両方で構成できます。文字列の場合、文字列はテーブルセルに出力されるだけです。サブサブ配列の場合、表示のために配列を「巻き戻し」たいと思います。この場合も、これらのサブサブアレイは、文字列または「サブサブサブアレイ」で構成できます。等々。
これにアプローチする最良の方法は何ですか?ビュー内の配列を巻き戻すための再帰関数を作成する必要があると考えています。文字列の場合は出力し、配列の場合は配列を巻き戻します。
関数自体を書くことは私には簡単に思えますが、実際にはどこで定義しますか?それは私のコントローラークラスに入りますか?何処か別の場所?自分の目で呼ぼうと思っています。Yii構造内で、スコープ内にあり(正しい用語を使用している場合)、正しく呼び出されるようにするにはどうすればよいですか?
したがって、私のコントローラーには、次のようなものがあります。
return $this->render('//messages', [
'table' => $array_to_unwind
]);
そして、messages.phpビューファイルには、次のようなものがあります。unwind()関数は、文字列の場合は文字列を出力し、配列の場合は配列を巻き戻します。
<table>
<?php
foreach ($table as $row) {
echo '<tr>';
foreach ($row as $cell) {
echo '<td>';
unwind($cell);
echo '</td>';
}
echo '</tr>';
}
?>
</table>
このようなことを行うには、独自のHelper
(たとえば、path-to-project/components/
基本テンプレート内の) クラスを作成し、内部に静的関数を作成する必要があります。
<?php
namespace app\components;
class MyHelper
{
public static function unwind($param) {
// here body of your function
}
}
次に、ビューでそれを呼び出します:
foreach ($row as $cell) {
echo '<td>';
echo \app\components\MyHelper::unwind($cell); //or without echo if your function is doing it, but it will be better if function will return value instead of echoing it
echo '</td>';
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加