216
216
function field_test_entity_form(&$form_state, $entity) {
219
if (isset($form_state['test_entity'])) {
220
$entity = $form_state['test_entity'] + (array)$entity;
222
$entity = (object)$entity;
219
224
foreach (array('ftid', 'ftvid', 'fttype') as $key) {
220
225
$form[$key] = array(
221
226
'#type' => 'value',
226
231
// Add field widgets.
232
$form['#builder_function'] = 'field_test_entity_form_submit_builder';
227
233
field_attach_form('test_entity', $entity, $form, $form_state);
229
235
$form['revision'] = array(
254
260
* Submit handler for field_test_set_field_values().
256
262
function field_test_entity_form_submit($form, &$form_state) {
257
$entity = field_test_create_stub_entity($form_state['values']['ftid'], $form_state['values']['ftvid'], $form_state['values']['fttype']);
258
field_attach_submit('test_entity', $entity, $form, $form_state);
263
$entity = field_test_entity_form_submit_builder($form, $form_state);
259
264
$insert = empty($entity->ftid);
260
265
field_test_entity_save($entity);
261
267
$message = $insert ? t('test_entity @id has been created.', array('@id' => $entity->ftid)) : t('test_entity @id has been updated.', array('@id' => $entity->ftid));
262
268
drupal_set_message($message);
263
$form_state['redirect'] = 'test-entity/' . $entity->ftid . '/edit';
271
unset($form_state['rebuild']);
272
$form_state['redirect'] = 'test-entity/' . $entity->ftid . '/edit';
276
drupal_set_message(t('The entity could not be saved.'), 'error');
282
* Build a test_entity by processing submitted form values and prepare for a form rebuild.
284
function field_test_entity_form_submit_builder($form, &$form_state) {
285
$entity = field_test_create_stub_entity($form_state['values']['ftid'], $form_state['values']['ftvid'], $form_state['values']['fttype']);
286
field_attach_submit('test_entity', $entity, $form, $form_state);
288
$form_state['test_entity'] = (array)$entity;
289
$form_state['rebuild'] = TRUE;