1

さまざまなシナリオに基づいて、イメージマネージャーのパスとルートパスを設定する必要があります。

同じユーザーが画像マネージャーを使用して、異なるページから画像をアップロードできます。シナリオを示すためにクライアント側からパラメータを送信したいと思います。たとえば、ユーザーがホームページでエディターを使用している場合は、ホームに送信します。同様に、お問い合わせページを使用する場合は、お問い合わせを送信してください。私にできることは、初期化中にクライアント側でルートパスを設定することだけです。たとえば、imagemanager_rootpath:"test"です。しかし、私のパスは、送信したパラメーターに基づいてサーバー側で計算されます。これを行う方法はありますか?

4

2 に答える 2

0

私があなたの問題について理解していることから、あなたには2つの選択肢があります。

1:サーバー上のテンプレートからJavascriptを生成し(Smartyまたは同等のものを使用して言う)、正しいルートパスをTinyMCE初期化コードに挿入します。

したがって、ストレートPHPでは、次のようになる可能性があります。

<?php
$root_path = get_root_path();
?>

// Other javascript goes here

tinymceInstance = tinyMce.init({
    //parameters
    imagemanager_rootpath: "<?php echo $root_path ?>"
});

2:Javascriptに必要なすべてのパラメーターを含むJavascriptパラメーターファイルを生成し、tinyMCEインスタンスを初期化するときにこれを使用します。

パラメータファイル:

<?php
echo "window.serverParameters = ".json_encode(array("imageRoot" => get_root_path()));
?>

HTML:

<html>
    <head>
        <script src="serverParameters.php" type="text/javascript" />
    </head>
</html>

Javascript:

tinymceInstance = tinyMce.init({
    //parameters
    imagemanager_rootpath: window.serverParameters.imageRoot
});

お役に立てば幸いです。

于 2012-08-09T00:58:30.347 に答える
0

現時点では、これを行うためのより良い方法を見つけることができませんでした。最終的に、リソースタイプを示すパラメーターを受け取り、ルートパスを決定し、Session ["imagemanager.filesystem.rootpath"]="someRootPath"を設定するヘルパーメソッドを作成しました。エディターでビューを返すコントローラーで、このヘルパーメソッドを呼び出します。これにはいくつかの欠点があります。1つは、イメージマネージャーを使用しているかどうかに関係なく、ヘルパーメソッドが事前に呼び出されることです。私の最初のアプローチは、画像マネージャーがクリックされたらパスを設定することでした。したがって、ビューのエディターがイメージマネージャーを使用しない場合は、ヘルパーメソッドを呼び出さないでください。これの2番目の欠点は、同じビューに複数のエディターがあるが、それらを異なる場所にアップロードする必要がある場合です。これは不可能です。すべてのエディターは、セッションで設定された同じルートパスを使用します。繰り返しになりますが、より良いアプローチは、各エディターからサーバーに値を送信し、ルートパスを設定することです。複数の場所を使用する1つの方法は、すべての場所を取得し、magemanager_rootpath: "someRootPath"を使用してtinyMceエディターのinit()に設定することです。ただし、これの利点の1つは、ビューが複数のエディターを使用し、それらがすべてそのビュー内の同じ場所を使用する場合、ヘルパーメソッドは、元のアプローチでは複数回ではなく、1回だけ呼び出されることです。だから、私はSkurrierの答えを正しいとマークしていますが、より良いアプローチを見つけたらコメントを残してください。

于 2012-08-10T18:23:29.047 に答える