2013-05-30 3 views
2

У меня есть Smarty массивуновообращенного умник массив яваскрипт массива

$promoFormData Smarty_Variable Object (3) 
         ->value = Array (1) 
          deliveryDates => Array (3) 
           0 => Array (2) 
             startDate => "2013/06/05" 
             endDate => "2013/06/28" 
           1 => Array (2) 
             startDate => "2013/07/05" 
             endDate => "2013/07/28" 
           2 => Array (2) 
             startDate => "2013/08/05" 
             endDate => "2013/08/28" 

Я хочу использовать этот массив deliveryDates как доступные даты в DatePicker. Так пытается преобразовать выше, следующий массив Javascript

var ranges = [ { start: new Date(2013, 06, 05), end: new Date(2013, 06, 28) }, 
       { start: new Date(2013, 07, 05), end: new Date(2013, 07, 28) }, 
       { start: new Date(2013, 08, 05), end: new Date(2013, 07, 28) } ]; 

Я попытался, используя код ниже:

<script> 
    var js_array = new Array(); 
    {{foreach from=$promoFormData.deliveryDates item=array_item key=id}} 
     {{foreach from=$array_item item=sub_array_item key=index}} 
      js_array['{{$id}}']['{{$index}}'] = '{{$sub_array_item}}'; 
     {{/foreach}} 
    {{/foreach}} 

    console.log(js_array); 
</scirpt> 

И я получаю ошибку ниже

 TypeError: js_array[0] is undefined 
    js_array['0']['startDate'] = '2013/06/05'; 

Любой, пожалуйста, руководство меня к правильному пути.

+0

Я не знаю, что вы просите. Литерал массива «работает» (помните, что в javascript «новая дата (2013, 06, 05)» - 5 ** июль ** 2013). Сценарий, который вы опубликовали, не является javascript. Вы пытаетесь использовать Smarty на сервере для создания литерала массива для javascript? Так это действительно вопрос Smarty? – RobG

+0

@RobG Да, я пытаюсь создать литерал массива в javascript, используя массив smarty. Здесь Iam, используя smarty, чтобы пройти через массив – Swathi

+0

Хорошо, получилось ..... – RobG

ответ

6

Если Smarty security settings позволяют это (в частности, это в $php_modifiers), вы можете использовать json_encode функции РНР:

var js_array = {$promoFormData.deliveryDates|json_encode}; 

Поскольку JSON является строгим подмножеством фактического JavaScript объекта синтаксиса литерала, это должно дать вам действительная декларация JS.

+0

Большое вам спасибо. Это помогает много – Swathi

+0

, вы также можете кодировать в .app файле – mikey

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