У меня есть набор массивов переменных php, которые назначаются шаблону SMARTY. Ниже приведена переменная php:
$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.
Очень признателен
Вы можете хранить свои поля только в одном массиве (PHP) итерации по нему (Smarty) с помощью foreach.
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
всезнайка
{foreach from=$f key=i item=data}
{literal}
$().ready(function() {
$("#group-ranks-edit-form").validate({
rules:
{/literal}
{$data.0}:
{literal}
{
required: true,
}
},
});
});
{/literal}
{/foreach}
Выход, созданный 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,
}
},
});
});