문제

질문을 제대로 공식화했는지 확실하지 않지만 여전히 ...

플래시 임베드를 보여주는 견해가 있으며이 플래시는 매개 변수로 /controller/action XML을 생성하는 URL. 이보기에서 XML 발전기 동작으로의 배열을 보내려고합니다. 가장 좋은 방법은 어떻습니까? 일부가 있습니까? helper->set() 이 어레이를 해당 조치로 보내려면 특정 URL을 만들어야합니까?

여기 내 구조가 있습니다.

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>";
도움이 되었습니까?

해결책

우선 말하는 방식으로 한 관점에서 다른 관점에서 데이터를 보낼 수 없습니다. 이러한 각 호출은 별도의 요청이 될 것이며 이는 프레임 워크에서 벗어난 다음 다시 발생한다는 것을 의미합니다. 이는 프레임 워크가 통화간에 구축되어 찢어지면서 뷰 사이에 데이터를 전달할 수 없음을 의미합니다.

이제 당신의 행동으로 보내야 할 배열과 관련하여 나는 완전히 혼란스러워합니다. 나는 당신이 문제를 올바른 방법으로보고 있다고 생각하지 않습니다. 해당 동작에 데이터 배열이 필요한 다음 XML을 생성하여 플래시 객체를 얻을 수 있으면 덜 의미가 있습니다. 플래시 객체가 해당 데이터 배열을 언급 한 매개 변수로 전송하는 책임이 아닌지 확실합니까?

글쎄, 당신이 말하고있는 모든 것이 그렇게해야한다고하더라도, 파일 시스템에서 해당 배열을 떨어 뜨린 다음 액션을 플래시로 호출 할 때 선택할 것을 제안합니다.

또는 또 다른 제안은 Ajax를 사용하여 해당 배열을 동작으로 보내는 것입니다.

두 가지 제안은 당신의 술어에 대한 나의 완전한 "단서"를 암시합니다.

나는 여전히 묻는 것이 필요합니다. 플래시 객체 가이 모든 일을 할 것입니까?

다른 팁

배열이 충분히 작 으면 직렬화 된 다음 URLENCODE를 사용하여 URL에 매개 변수로 추가하십시오.

player.ctp

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

그런 다음 다시 읽으십시오.

public function generate($array) {
  $array = unserialize($array);
}

세션에 배열을 저장 한 다음 XML 생성기 조치에 대한 다음 요청에서 세션에서 다시 읽으십시오.

my_controller.php

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

xml_controller.php

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

그러나 Flash가 때때로 세션 쿠키를 보내지 않는 문제에 대해 들었습니다.이 경우 세션 ID를 조치의 URL에 추가합니다.

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

그리고 세션을 되 찾으려면 :

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

이와 같은 CakePHP의 컨트롤러로 데이터가 포함 된 배열을 보낼 수 있습니다.

링크에 인수를 전달할 수 있습니다.

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

그런 다음 다음과 같은 방식으로 컨트롤러 작업에서 검색 할 수 있습니다.

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

물론 배열이 너무 크지 않아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top