リチウム PHP を smarty で拡張しようとしていますが、リチウム ヘルパーへのアクセスを許可する smarty プラグイン以外はすべて機能しています。
私の smarty 関数は、リチウム ヘルパーの「キャッチオール」を意図しています。私が苦労している部分は、ヘルパーパラメーターをコールバックに動的に追加することです。
簡素化されたコード
$params = array('Google', 'http://www.google.com');
$helper = function($args){
return $this->html->link($args);
};
return call_user_func_array($helper, $params);
これにより、<a href="/Google">Google</a>
いくつかのさらなるテストは、上記が $params 配列の最初の項目のみをコールバックに渡すことを示しました...奇妙です。だから私はそれを独自の配列にラップしました。それを受け取ってください、私には説明できません!
return call_user_func_array($helper, array($params));
これにより、リチウム エラーが発生しますが、ヘルパーには、配列から個々のパラメーターとして変換された引数ではなく、配列が渡されているようです。
エラー スニペット
「URL に一致するパラメータが見つかりませんでし( 0 => 'Google', 1 => 'http://www.google.com', 'controller' => 'pages', 'action' => 'index')
た。
そのため、call_user_func_array メソッドの使い方が間違っていることがわかりました。
これが私の目的を達成するための唯一の解決策であることに満足しているわけではありません。関数に任意の数の引数をいつでも動的に渡すためのより良い方法を考えることができれば、私は素晴らしいと思います。
注: $this->
html
->link
は私の問題を説明するための単純化された方法です。そのオブジェクトhtml
のlink
一部は実際に動的に変更されるため、完全に動的な関数引数が必要になります。