0

質問を正しく作成したかどうかはわかりませんが、それでも...

Flash 埋め込みを示すビューがあり、この Flash/controller/actionは XML を生成する URL をパラメーターとして受け取ります。このビューから、配列を XML ジェネレーター アクションに送信する必要があります。最善の方法は?この配列をそのアクションに送信するには、特定の URL を作成する必要がありhelper->set()ますか?

ここに私の構造があります:

my_controller.php

function player() {}

player.ctp

<div id="myDiv">Here it Goes</div>
<script type="text/javascript">
  var so = new SWFObject('player.swf','test','50','50','8');
  so.addVariable('file','/xml/generate'); // need to pass an array here
  so.write('myDiv');
</script>

xml_controller.php

public function generate() {
  // I need to read an array here
}

generate.ctp

echo "<xml><data>" . $array['contents'] . "</data>";
4

4 に答える 4

2

配列が十分に小さい場合は、シリアル化してから urlencode し、生成アクションの URL にパラメーターとして追加します。

player.ctp

so.addVariable('file','/xml/generate/<?php echo urlencode(serialize($array)); ?>');

それからそれを読み返します:

public function generate($array) {
  $array = unserialize($array);
}
于 2008-10-02T19:01:44.163 に答える
1

配列をセッションに保存し、XML ジェネレーター アクションへの次の要求で、セッションから読み戻します。

my_controller.php

function player() {
  $this->Session->write('key', $array);
}

xml_controller.php

public function generate() {
  $array = $this->Session->read('key');
}

ただし、flash がセッション Cookie を送信しないことがあるという問題について聞いたことがあります。その場合は、アクションの URL にセッション ID を追加してください。

so.addVariable('file','/xml/generate/<?php echo $session->id(); ?>');

セッションを元に戻すには:

public function generate($sessionId) {
  CakeSession::id($sessionId);
  $array = $this->Session->read('key');
}
于 2008-10-02T18:56:02.693 に答える
0

次のように、データを含む配列をビューから CakePHP のコントローラーに送信できます。

リンクに引数を渡すことができます:

www.site.com/model/action/param1:foo/param2:test

次に、次の方法でコントローラー アクションでそれらを取得できます。

$yourarray = $this->params['named'];

もちろん、配列が大きすぎてはいけません。

于 2012-03-10T12:10:38.297 に答える
0

まず第一に、あなたが話している方法で、あるビューから別のビューにデータを送信することはできません。これらの呼び出しはそれぞれ別個の要求であり、これは、フレームワークの外に出て、再び入ることを意味します。これは、フレームワークが呼び出し間で構築および破棄され、ビュー間でデータを渡すことが不可能になることを意味します。

アクションに送信する必要がある配列に関して、私は完全に混乱しています。あなたは問題を正しい方法で見ているとは思いません。そのアクションがデータの配列を必要とし、Flash オブジェクトがそれを取得できるように XML を生成する場合は、さらに意味がありません。そのデータの配列をあなたが言及した Param に送信する責任があるのは Flash オブジェクトではありませんか?

まあ、あなたが言っていることはすべてそのように行わなければならないとしても、そのアレイをファイルシステムにドロップし、アクションがフラッシュによって呼び出されたときにそれをピックアップすることをお勧めします.

または、AJAX を使用してその配列をアクションに送信することもお勧めします。

どちらの提案も、あなたの述語に対する私の完全な「無知」を暗示しています。

私はまだ質問しなければなりません.Flash オブジェクトはこれで何かをするのではないでしょうか?

于 2008-10-02T11:41:48.887 に答える