smarty プラグイン ディレクトリ内に smarty 関数を記述しようとしています。これは再帰関数です。これは通常の php ファイルでうまく機能し、ドロップダウン選択ボックスを生成します。今はsmarty関数にしてtplから呼び出したいと思っています。
<?php
/*
* Smarty plugin
* ————————————————————-
* File: function.recurse_array.php
* Type: function
* Name: recurse_array
* Purpose: prints out elements of an array recursively
* ————————————————————-
*/
function smarty_function_recurse_array($arr,$depth=0, &$smarty)
{
$html = '';
foreach ( $arr as $v ) {
$html.= '<option value="' . $v['id'] . '">';
$html.= str_repeat('-', $depth);
$html.= $v['cata_name'] . '</option>' . PHP_EOL;
if ( array_key_exists('subcategories', $v) ) {
$html.= smarty_function_recurse_array($v['subcategories'], $depth+1);
}
}
return $html;
}
このファイルは smarty プラグイン ディレクトリに保存されており、次のように呼び出します。
{recurse_array array=$myarray}
今、再帰呼び出し関数の引数セクションについて混乱しています
$html.= smarty_function_recurse_array($v['subcategories'], $depth+1);
次のような警告を生成します
Warning: Missing argument 3 for smarty_function_recurse_array()
どうすればこれを解決できますか?