2012-05-18 3 views
0

Мне нужно передать массив из моего действия zend в представление, возможно, используя ajax, который еще предстоит решить. для этого мне нужно вставить элемент сценария и внутри него определить переменную javascript, к которой я буду передавать свой php-массив, но мне не удается вставить элемент скрипта в zend_form. что это самый простой способ, чтобы включить этот код в мой PHTML сценарий:Как вставить массив в javascript внутри zend_form

<script type="text/javascript"> 
    var obj = <?php echo json_encode($php_array); ?>; 
</script> 
+1

Я не знаю, почему вы захотите, но вы не можете добавить javascript в форму. Просто отправьте javascript на представление и эхо js out после формы – Ashley

+0

вы не можете просто эхо в js, он не будет выполнен – Ajant

+1

да, вы можете и да, это будет – Ashley

ответ

1

Вы можете использовать помощник вида inlineScript() передать Java-скрипт на ваш взгляд.

в своем действии $this->inlineScript()->setScript('java script here');

эхо это в вашей точки зрения <?php echo $this->inlineScript() ?>

вы также можете использовать json() помощника, чтобы передать JSON в сценарий Java в вашем представлении.

+0

thanx. Я просто нашел это тоже. это довольно простая вещь, но мне потребовалось время, чтобы пойти в Google. спасибо за вашу помощь – Ajant

0

Решение RockyFord является чрезмерно сложным IMO. Просто присвойте массив PHP любой переменной вида и добавьте введенный вами код (измененный для использования переменной вида) в конец сценария представления - сразу после эха формы.

//controller 
$this->view->php_array = array(...); 

//view 
echo $this->form; 
<script type="text/javascript"> 
    var obj = <?php echo json_encode($this->php_array); ?>; 
</script> 

Он будет работать так, как вы ожидаете.

Использование помощника просмотра JSON не является идеальным для использования beacose, оно изменяет заголовки, а также отключает компоновку по умолчанию. Вы можете заменить json_encode на Zend_Json::encode, чтобы он работал даже без json_extension, загруженного в PHP.

+0

Это отличное решение, когда вам нужно сделать это только один раз. – RockyFord

+0

Вы правы. Если вам нужно использовать код в нескольких местах, это идеально, чтобы переместить его в extenal JS и связать его с помощью 'appendScript ($ filename)' –

Смежные вопросы