2015-07-08 3 views
0

У меня есть несколько форм на странице. Перед их рендерингом в своих представлениях я динамически создаю их на PHP с помощью кнопок и элементов. Я хочу, чтобы настроить tabindexes динамически, поэтому в основном только у меня есть все формы, готовые в конце PHP скрипт, я делаю следующее:Foreach loop не обновляет значения

public function fixTabindexes($forms) { 

    $tabindex = 1;  

    $forms = count($forms) > 1 ? $forms : [$forms]; 

    foreach($forms as $form) { 

     foreach($form['form'] as $element) { 
      $element->setAttrib('tabindex', $tabindex++); 
     } 

     foreach($form['buttons'] as $button) {            
      $button['tabindex'] = $tabindex++; 
     } 

    } 

    return $forms; 

} 

элементы обновляются отлично, но кнопки не делают. Кажется, что второй foreach - $form['buttons'] не сохраняет ключ ['tabindex'] и его значение. Однако, если я делаю var_dump внутри цикла foreach, он отображается нормально.

Что я делаю неправильно?

+0

Из вашего вопроса это обновление, поскольку вы не обновляете массив. Замените $ button [tabindex] другим массивом, в котором вы сохраняете yor tabindex и возвращаете этот массив. –

+0

Можете ли вы дать нам var_dump из цикла for и вне цикла for? –

+0

... это то, что долгие часы работы делают с одним. Благодаря! –

ответ

0

В соответствии с комментариями других, мне не хватало & рядом с $button, поэтому он делал копию моего массива и не возвращал его. Поэтому добавив &, я сохранил ссылки и обновил свой массив должным образом, НО тогда еще одна вещь, которую я отсутствовала, была такой же - & с $form тоже.

public function fixTabindexes($forms) { 

    $tabindex = 1;  

    $forms = count($forms) > 1 ? $forms : [$forms]; 

    foreach($forms as &$form) { 

     foreach($form['form'] as $element) { 
      $element->setAttrib('tabindex', $tabindex++); 
     } 

     foreach($form['buttons'] as &$button) {            
      $button['tabindex'] = $tabindex++; 
     } 

    } 

    return $forms; 

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