2014-11-06 83 views
0

我有一組分配到SMARTY模板的php變量數組。以下是php變量:檢索名稱由變量組成的Smarty變量的值

$smarty = new Smarty; 
for ($i = 1; $i <= 3; ++$i) { 
    ${'field'.$i} = array('group_rank_edit_' . $i, 'some_data'.$i); 

    // Assign variable to the template 
    $smarty->assign('field'.$i , ${'field'.$i}); 
} 

因此,有3個數組分配給模板。現在,在模板中,我很難檢索值。假設模板是有點兒像這樣:

{{for $i=1 to 3}} 
    $().ready(function() { 
    $("#group-ranks-edit-form").validate({ 
     rules: { 
      {{$field.{{$i}}.0}}: { 
       required: true, 
      } 
     }, 
    }); 
}); 
{{/for}} 

所以輸出的一個看起來像這樣:

$().ready(function() { 
    $("#group-ranks-edit-form").validate({ 
     rules: { 
      group_rank_edit_1 : { 
       required: true, 
      } 
     }, 
    }); 
}); 

顯然,下面的格式不會導致預期的輸出:

{{$field.{{$i}}.0}} 

任何想法?我正在使用Smarty 3 BTW。

非常感謝

回答

2

可以使用的foreach存儲你的領域,在短短一個陣列(PHP)在它(Smarty的)的迭代。

PHP

$smarty = new Smarty; 
$f  = [];    // array will contain data of all 3 fields 
for ($i = 1; $i <= 3; ++$i) // fill array with data 
{ 
    $f[$i] = array('group_rank_edit_' . $i, 'some_data'.$i); 
} 
$smarty->assign('f' , $f); // assign the array to smarty 

Smarty的被Smarty

$().ready(function() { 
    $("#group-ranks-edit-form").validate({ 
     rules: 
      group_rank_edit_1: 
      { 
       required: true, 
      } 
     }, 
    }); 
}); 

$().ready(function() { 
    $("#group-ranks-edit-form").validate({ 
     rules: 
      group_rank_edit_2: 
      { 
       required: true, 
      } 
     }, 
    }); 
}); 

$().ready(function() { 
    $("#group-ranks-edit-form").validate({ 
     rules: 
      group_rank_edit_3: 
      { 
       required: true, 
      } 
     }, 
    }); 
}); 
+0

的最佳解決方案...感謝蒂姆產生

{foreach from=$f key=i item=data} {literal} $().ready(function() { $("#group-ranks-edit-form").validate({ rules: {/literal} {$data.0}: {literal} { required: true, } }, }); }); {/literal} {/foreach} 

輸出 – ethereal1m 2014-11-07 06:18:05