php - Dynamic generated form in Yii2 -


i'm learning programming in yii2 framework, , can't find out how achieve specific task: want generate monthly statistic based on collected data. task, need generate form, wary on number of projects , users. example:

project 1: 500$  user1 field (in fields want put percentage of above value)  user2 field  user3 field  project 2: 1000$  user2 field  user3 field 

and on. it's easy in structural way, , save results in serialized form, way i'm unable validate (for example if sum of values in fields given project excess 100% , if there error, after sending form, data erased). possible achieve such task yii2?

edit: i'm generating form way:

controller:

        $date = "2015-05";     $model = new raport();     $invoices = faktura::find()->where(['like','paid_date', $date])->all();  $projects = array();          foreach($invoices $invoice){         $id = $invoice->project_id;         $projects[$id]['faktury'][] = $invoice;         $projects[$id]['model']= project::find()->where(['id'=>$invoice->project_id])->one();         $projects[$id]['value']+= $invoice->value_netto;         $projects[$id]['users']= '' ;         $checks = check::find()->where(['project_id'=>$id])->all();         if (empty($checks)){             $projects[$id]['users']=$projects[$id]['model']->users;         }else {             foreach ($checks $check) {                 $projects[$id]['users'][$check->user->id] = $check->user;             }         }     } 

view:

   foreach ($projects $key => $project) {     echo"<h2>".$project['model']->name."</h2>";     echo 'project value: '.$project['value'];     echo"<p>percentage value:</p>";    //  echo"<pre>";     foreach ($project['users'] $user) {          echo"<p>".$user->email."</p>";         echo "<input name='raport[".$key."][".$user->id."]'>";     } } 

yes possible, creating form in dynamic way, create model rules in same dynamic way.

what trying done in gii generator. gii takes fields (in gii's case database table fields) , created rules model , fields on form. in end gii writes rules model file not have to, can return array result of form. same goes fields on form, can have

basically should create model not active record model https://github.com/yiisoft/yii2-app-advanced/blob/master/frontend/models/contactform.php. instead of way rules function created should create array based on "other things" (like projects , users). should create function validation , checks if % above 100 , tie validation of fields. simple example

/**  * @inheritdoc  */ public function rules() {     $rules = [];     foreach(['p1', 'p2'] $project) {         foreach(['u1', 'u2'] $user) {             $rules[] = [$project.'_'.$user, "required"];         }     }     return $rules; } 

afterwards, based on same "other things" above should create form. because model , view use same fields should work out quite ok.

example view

    <?php $form = activeform::begin(); ?>      <?php         foreach(['p1', 'p2'] $project) {             foreach(['u1', 'u2'] $user) {                 echo $form->field($model, $project.'_'.$user)->textinput()              }         } ?>  ...................     <?php activeform::end(); ?> 

Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -