私はPhalconボルトテンプレートを持っています。私はカスタムヘルパーを呼びたいと思っていました。それは配列を受け入れますが、ヘルパーに送られる配列は文字列型です。私はこのコードを持っている私のlist.voltでPhalcon Volt Arrayは文字列型です
、私loader.phpで
{% set myfolder = data.foldername %}
{% set key = data.folderkey %}
{% set url = convert([myfolder, key]) %}
、私はヘルパーディレクトリを宣言し、このコードを持っています
//$params should be single dimensional array
$compiler->addFunction('convert', function($params){
var_dump($params);
return MyCustomHelper::convert($params);
});
はウィル配列タイプの代わりにstring(31) "array($fname, $fkey)"
を出力します。それは私の助けを止めるようにしました。
誰もがこれに直面しています。私はそれが配列型ではなく文字列である必要がありますか?
更新: @Nikolay Mihaylovの提案を適用した後。
は私がloader.phpで
use Modules\Library\MyCustomUrlHelper;
/*
......
Some code here
..............................
....................
*/
$compiler->addFunction('convert', function($resolvedArgs, $exprArgs){
return 'MyCustomUrlHelper::convert('.$resolvedArgs.')';
});
私のヘルパーディレクトリを含めました、私はディレクトリ
を登録した、私 services.phpでFatal error: Class 'MyCustomUrlHelper' not found in cache/volt/%apps%%invo%%views%%test%%list.volt.php on line 56
エラーを得ました
........
.....................
$loader->registerDirs(array(APP_PATH.'Modules/Library'))->register();
...................
........................
私のモジュール/ライブラリディレクトリには、私はこのMyCustomUrlHelper.php
<?php
namespace Modules\Library;
use Phalcon\Tag;
class MyCustomUrlHelper extends Tag
{
public function convert($params)
{
if(!is_array($params))
{
$params = array($params);
}
/*
..... some code here ...
.................
..........
*/
return $converted;
}
}
?>
は私が何かを見逃していましたか?
はい。本当、しかし、あなたは上記のみ文字列パラメータを受け入れます。 My $パラメータは動的配列です。カスタムヘルパーへの1回のリクエストで3つの値または4つの値を指定できます。私の問題は、文字列ではなく配列型に$パラメータを作る方法です。 – user1149244
テストするだけで、意図したとおりに動作していることがわかります。テストの例で私の答えを更新する。 –
私はこれを試したところ、このエラーが発生しました。致命的なエラー:クラス 'MyCustomUrlHelper'がキャッシュ/ボルト/%apps %% invo %% views %% test %% list.volt.phpの56行目に見つかりませんでした。上記のサンプルコードを読みやすくするために、私のサンプルコードを追加してください。 – user1149244