사용자 정의 모듈에서 hook_menu에 정의 된 페이지를 가지려고합니다.이 양식은 양식을 수정하여 특정 내용 유형에 대한 추가 양식을 표시합니다.새 페이지에서 Drupal의 노드 양식 사용
지금까지는 코드가 설정되어있는 기본값 (예 : 사용자가 양식에 입력하는 항목을 선택하지 않음)만으로 새 노드를 저장할 수 있습니다. 내가 확인한 $form_state['input']
입력 된 값이 포함되어 있지만 $form_state['values']
않습니다, 그래서 새 노드가 잘못 저장됩니다 가져옵니다.
function mymodule_menu() {
return array(
'admin/content/myadd/%' => array(
'title' => 'my custom add page',
'page callback' => 'mymodule_node_add',
'page arguments' => array(3),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
),
);
}
function mymodule_node_add() {
module_load_include('inc', 'node', 'node.pages');
//I'm doing a print here instead of returning because I'm calling this page
//in an AJAX popup, so I don't want the whole page to output, only the form.
print render(drupal_get_form('mymodule_node_add_form'));
}
function mymodule_node_add_form($form, &$form_state) {
if (!isset($form_state['node']) {
global $user;
$node = (object) array(
'uid' => $user->uid,
'type' => 'mycontenttype',
'language' => LANGUAGE_NONE,
);
//this is setting a default value
$node->myfield = array(LANGUAGE_NONE => array(array('value' => arg(3))));
$form_state['build_info']['args'] = array($node);
$form = drupal_build_form('mycontenttype_node_form', $form_state);
$form['actions']['submit']['#submit'][0] = 'mymodule_node_add_form_submit';
//there's a lot more customization of the form here, like adding fields, etc.
}
return $form;
}
function mymodule_node_add_form_submit($form, &$form_state) {
//here's where $form_state['input'] is correct but $form_state['values'] isn't.
$node = node_form_submit_build_node($form, $form_state);
node_save($node);
$form_state['values']['nid'] = $node->nid;
$form_state['nid'] = $node->nid;
$form_state['redirect'] = 'some/other/page';
}
내가 잘못 여기서 뭔가를하고있는 중이 야 : 그래서,
여기에 관련 코드는? 양식 ID가 잘못 될까봐 걱정해야합니까? (내 양식의 ID는 mymodule_node_add_form
이지만 실제 양식은 mycontenttype_node_form
일 수 있습니다.)이 영향을 받습니까?
drupal이 노드 양식을 만들거나 제출시 노드를 만드는 사용자 지정 양식을 표시하겠습니까? – D34dman
내 자신의 양식을 원하지만 drupal의 양식을 기반으로합니다. 또는 드루팔 (Drupal)은 새 버튼을 추가하고 제출 버튼의 핸들러를 변경하는 등의 수정을가했습니다. 어쨌든 괜찮습니다. – cambraca