Welcome Guest, Not a member yet? Register   Sign In
Datamapper | m:m + join_fields edit form
#3

[eluser]Anestetikas[/eluser]
Wrote this one, how can I improve it?

generate edit_view:
Code:
....
$jobs = new Job;
            $jobs->get();

            $this->data['jobs'] = $jobs;

            $jobs_marked = new Job;
            $jobs_marked->include_join_fields();
            $jobs_marked->get_by_related($car);

            $this->data['jobs_marked'] = $jobs_marked;
...



edit_view:
Code:
....
foreach ($jobs as $job) {

                $value = FALSE;
                $value2 = "";

                foreach ($jobs_marked as $job_marked) {

                    if ($job->id == $job_marked->id) {
                        $value = TRUE;
                        $value2 = $job_marked->join_date;
                    }
                }

                $data = array(
                    'name' => "jobs[" . $job->id . "]",
                    'id' => $job->id,
                    'checked' => $value,
                );
                $data1 = array(
                    'name' => "jobs2[" . $job->id . "]",
                    'id' => $job->id,
                    'value' => set_value("jobs2[" . $job->id . "]", $value2),
                    'style' => 'width: 200px',
                );

                echo "<tr>";
                echo "<td class=\"redagavimas_pavadinimas\">";
                echo form_label($this->lang->line($job->description), $job->id, $label_options);
                echo "</td>";
                echo "<td class=\"none\">";

                echo form_checkbox($data) . form_input($data1);

                echo "</td>";
                echo "</tr>";
            }
....


save controller:
Code:
....
                $jobs_old = new Job;
                $jobs_old->get_by_related($car);


                //delete old job relations
                $car->delete($jobs_old->all);
            }

    //set new car details
            foreach ($this->input->post() as $post => $value) {

                $car->{$post} = $value;
            }

    //if from add unset id
            if ($this->input->post('id') == "X")
                unset($car->id);

            $car->user_id = $this->ion_auth->get_user()->id;

    //declare new jobs
            $jobs_array = array();

            foreach ($this->input->post('jobs') as $job => $value) {
                $jobs_array[] = $value;
            }
            $jobs = new Job;
            $jobs->where_in('id', $jobs_array);
            $jobs->get();

            //save all new job relations
            $car->save($jobs->all);

            //save join fields
            $join_fields = $this->input->post('jobs2');

            foreach ($jobs as $job) {

                if (!empty($join_fields[$jobs->id]))
                    $job->set_join_field($car, 'due_date', $join_fields[$job->id]);
            }
...


Messages In This Thread
Datamapper | m:m + join_fields edit form - by El Forum - 03-28-2011, 07:11 AM
Datamapper | m:m + join_fields edit form - by El Forum - 03-30-2011, 11:25 PM
Datamapper | m:m + join_fields edit form - by El Forum - 03-31-2011, 02:16 AM



Theme © iAndrew 2016 - Forum software by © MyBB