Drupal 7 开发内部培训资料, 分头诗人

请问新增和编辑表单,用同一个表单,怎么传参数呢?

赞成!
0
否决!
$items['admin/config/aa/create'] = array(
   'title' => t('新增词语'),
   'page callback' => 'word_filter_page',
   //'page arguments' => array('word_filter_form_create'),
   'access arguments' => array('administer create word'),
   'type' => MENU_LOCAL_ACTION,
   'file' => 'word_filter.admin.inc',
);

$items['admin/config/aa/%/edit'] = array(
   'title' => t('修改词语'),
   'page callback' => 'word_filter_page',
   'page arguments' => array(1),
   'access arguments' => array('administer create word'),
   'file' => 'word_filter.admin.inc',
);

然后写到这里:

function word_filter_page($id=''){
	  $build = array();
	  $build['word_filter_page_form'] = drupal_get_form('word_filter_form_create');
	  return $build;
}

我不知道怎么传递参数了,请各位指点一下,谢谢了!

3 个回答

赞成!
0
否决!
function word_filter_page($id=''){
      $build = array();
      $build['word_filter_page_form'] = drupal_get_form('word_filter_form_create', $id);
      return $build;
}

function word_filter_form_create($form, &$form_state, $id){
    //这里的元素 ,可以参考formapi,里面有一个default value
}

f

赞成!
0
否决!

好的,非常感谢诗人,照你的做法,大部分功能实现了。

但还是有个小问题,为嘛搞验证方法的时候,却不起作用呢?

function word_filter_form($form, &$form_state, $id=''){
     ……
    $form['setting']['buttons']['submit'] = array(
			'#type' => 'submit',
			'#value' => t('提交'),
			'#submit' => array('word_filter_form_submit'),
			'#validate' => array( 'word_filter_form_validate'),
	);
}

function word_filter_form_validate($form, &$form_state,$id='') {
    if(empty($id)){
    }
}

这里没起作用,我在进入修改表单时,直接echo $id,也是没有结果的。

赞成!
0
否决!
1
这个也搞定了,用hidden传值

谢谢诗人