/** * Generate form elements suitable for updating the given record in the * given table. * * @param string $table The table for which elements * should be generated. * @param mixed $primary_key The primary key value for an * update form. * @param \Jerity\Form\Generator $generator An existing form that should * be added to. If not provided, * a new instance is created. * * @return \Jerity\Form\Generator The generator with other fields added. */ public function generateUpdateForm($table, $primary_key, Form\Generator $generator = null) { $generator = $this->generateForm($table, 'update', $generator, $primary_key); // fetch row and populate form $data = $this->fetchRow($table, $primary_key); if (count($data)) { $generator->populateData(Arrays::collapseKeys($data, self::FORM_PREFIX . '_args[' . $table . ']')); } return $generator; }
/** * @dataProvider collapseKeysProvider */ public function testCollapseKeys($input, $expected) { $this->assertSame($expected, Arrays::collapseKeys($input)); }
/** * */ public function populateData(array $data, $replace = true) { // $data should be a single-dimension array $data = Arrays::collapseKeys($data); if ($replace) { $this->data = $data; } else { // merge and overwrite $this->data = $data + $this->data; # array addition is NOT commutative } }