2014-11-06 81 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