Neculai Andrei February 2016

How to parse .ini file and generate code in php

I'm new to .ini and php. I'm using PFBC to generate form fields. This is the code sample to generate one form field:

$form->addElement(new Element\T_COMPANY("", "company", array(
"required" => 1,
"placeholder" => "*Bedrijf:",
)));

I need to read an .ini file and based on what is in that .ini to generate one or more lines of code to make the form field. The .ini file will contain some thing like :

fields[company] = T_COMPANY,"","company",1,"*Company"

where T_COMPANY is the identifier to generate this block of code $form->addElement(new Element\T_COMPANY( next "" is the identifier for "" in the php code next "company" is the identifier for "company" in the php code next 1 identifier for "required" => 1, in the php and the last one "*Bedrijf" identifier for "placeholder" => "*Bedrijf:", Any idea on how to do this ?

I tried to use foreach to construct the syntax but is not working

foreach ($formConfig as $elementConfig) {
    switch (strtolower($elementConfig['type'])) {
    case 'text':
        $className = 'Element\T_COMPANY';
            break;
    default:
      throw new Exception();
      break;
  }
  $formElement = new $className("", "Required", array( 
    "required" => 1,
    "placeholder" => "*Bedrijf:",
    ));
  $form->addElement($formElement);
}
$form = new Form($formConfig);

Answers


Neculai Andrei February 2016

This is what helped me

foreach ($ini_array['FORM_SETTINGS'] as $type => $fieldsData) {

        if ($fieldsData['type'] == 'HTML'){
                $className = "PFBC\\Element\\{$fieldsData['type']}";
                $form->addElement(new $className($fieldsData['string']
                ));
            continue;}

        if ($fieldsData['required'] == true){
            $className = "PFBC\\Element\\{$fieldsData['type']}";
            $form->addElement(new $className($fieldsData['label'], $fieldsData['id'], array(
            'required' => $fieldsData['required'],
            'placeholder' => $fieldsData['placeholder'],
                )
            ));
        }

        if ($fieldsData['required'] == false){
            $className = "PFBC\\Element\\{$fieldsData['type']}";
            $form->addElement(new $className($fieldsData['label'], $fieldsData['id'], array(
            'placeholder' => $fieldsData['placeholder'],
                )
            ));
        }


}

Post Status

Asked in February 2016
Viewed 2,956 times
Voted 8
Answered 1 times

Search




Leave an answer