', array_values($columnLabels)); $elementHelpMessage = $this->getElementHelpMessage($data, $form); $elementLabel = $this->setClasses($data)->buildElementLabel($data, $form); $elMarkup = ""; $tabIndex = \FluentForm\App\Helpers\Helper::getNextTabIndex(); foreach ($this->makeTabularData($data) as $index => $row) { $elMarkup .= ""; $elMarkup .= ""; $isRowChecked = in_array($row['name'], $checked) ? 'checked' : ''; foreach ($row['columns'] as $column) { $name = $data['attributes']['name'] . '['.$row['name'].']'; $name = $fieldType == 'checkbox' ? ($name.'[]') : $name; $isColChecked = in_array($column['name'], $checked) ? 'checked' : ''; $isChecked = $isRowChecked ? $isRowChecked : $isColChecked; $atts = [ 'name' => $name, 'type' => $fieldType, 'value' => $column['name'] ]; if($tabIndex) { $atts['tabindex'] = $tabIndex; } $attributes = $this->buildAttributes($atts, $form); $input = ""; $elMarkup .= ""; } $elMarkup .= ""; } $elMarkup .= "
{$columnHeaders}
{$row['label']}{$input}
"; $elMarkup = "
{$elMarkup}{$elementHelpMessage}
"; $html = sprintf( "
{$elementLabel}{$elMarkup}
", $data['attributes']['data-type'], $data['attributes']['name'], $data['attributes']['class'] ); echo apply_filters('fluenform_rendering_field_html_'.$elementName, $html, $data, $form); } public function makeTabularData($data) { $table = []; $rows = $data['settings']['grid_rows']; $columns = $data['settings']['grid_columns']; foreach ($rows as $rowKey => $rowValue) { $table[$rowKey] = [ 'name' => $rowKey, 'label' => $rowValue, 'columns' => [] ]; foreach ($columns as $columnKey => $columnValue) { $table[$rowKey]['columns'][] = [ 'name' => $columnKey, 'label' => $columnValue ]; } } return $table; } protected function getElementHelpMessage($data, $form) { $elementHelpMessage = ''; if ($form->settings['layout']['helpMessagePlacement'] == 'under_input') { $elementHelpMessage = $this->getInputHelpMessage($data); } return $elementHelpMessage; } protected function setClasses(&$data) { if (!isset($data['attributes']['class'])) { $data['attributes']['class'] = ''; } $placement = $data['settings']['label_placement']; $placementClass = $placement ? 'ff-el-form-'.$placement : ''; $hasConditions = $this->hasConditions($data) ? ' has-conditions' : ''; $defaultContainerClass = $this->getDefaultContainerClass(); $containerClass = $data['settings']['container_class']; $data['attributes']['class'] .= trim(implode(' ', array_map('trim', [ $defaultContainerClass, $containerClass, $placementClass, $hasConditions ]))); return $this; } }