كيف يمكنني إرسال المصفوفات بين وجهات النظر في للكيك

StackOverflow https://stackoverflow.com/questions/161794

  •  03-07-2019
  •  | 
  •  

سؤال

أنا لست متأكدا إذا أنا وضعت السؤال حق, ولكن لا يزال ...

لدي رأي يظهر فلاش تضمين هذا فلاش تأخذ معلمة /controller/action URL الذي يولد XML.أحتاج إلى إرسال من هذا الرأي ، صفيف إلى 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 لذلك فلاش كائن يمكن أن تحصل عليه ، ثم يجعل حتى أقل من ذلك الشعور.هل أنت متأكد من أن فلاش كائن ليس المسؤول عن إرسال مجموعة من البيانات إلى المعلمة التي ذكرتها ؟

حسنا, حتى لو كان كل ما تقوله يجب أن يكون القيام به تماما مثل ذلك, أنا أقترح عليك أن إسقاط مجموعة على نظام الملفات ثم اختيار الأمر عندما عمل يسمى من قبل فلاش.

أو اقتراح آخر هو استخدام اياكس لإرسال أن مجموعة العمل.

كل اقتراحات يعني بلدي ينطق "جهلا" على المسند.

أنا لا تزال لديها أن نسأل أليس فلاش وجوه ستفعل شيئا في كل هذا ؟

نصائح أخرى

إذا كانت مجموعة صغيرة بما فيه الكفاية ، تسلسل ثم urlencode وإضافته كما paramter إلى عنوان url الخاص بك توليد العمل:

لاعب.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');
}

ومع ذلك أنا سمعت من بعض المشاكل حيث فلاش في بعض الأحيان لا يرسل ملفات تعريف الارتباط في هذه الحالة إلحاق معرف جلسة العمل إلى عنوان العمل:

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

والحصول على الدورة:

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

يمكنك إرسال مجموعة مع البيانات من أجل وحدة تحكم في للكيك مثل هذا.

إلى الرابط يمكنك تمرير الوسائط:

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

ثم يمكنك استردادها في وحدة تحكم العمل بالطريقة التالية:

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

بالطبع مجموعة لا ينبغي أن تكون كبيرة جدا ثم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top