我需要创建一个 drupal 表,其中包含每条记录的删除链接。我有一个带有编辑链接的现有表格。他们使用 hook_menu 传递记录的 ID 并重定向到联系表单。我如何扩展此功能以添加编辑。代码是
function _MYMODULE_sql_to_table($sql) {
$html = "";
// execute sql
$resource = db_query($sql);
// fetch database results in an array
$results = array();
while ($row = db_fetch_array($resource)) {
$results[] = $row;
$id = $row['id'];
$email = $row['email'];
$comment = $row['comment'];
// drupal_set_message('Email: '.$email. ' comment: '.$comment. ' id: '.$id);
}
// ensure results exist
if (!count($results)) {
$html .= "Sorry, no results could be found.";
return $html;
}
// create an array to contain all table rows
$rows = array();
// get a list of column headers
$columnNames = array_keys($results[0]);
// loop through results and create table rows
foreach ($results as $key => $data) {
// create row data
$row = array(
'edit' => l(t('Edit'),"admin/content/test/".$data['id']."/ContactUs", $options=array()),
'delete' => l(t('Delete'),"admin/content/".$data['id']."/ContactUs",$options = array()),
);
// loop through column names
foreach ($columnNames as $c) {
$row[] = array(
'data' => $data[$c],
'class' => strtolower(str_replace(' ', '-', $c)),
);
}
// add row to rows array
$rows[] = $row;
}
// loop through column names and create headers
$header = array();
foreach ($columnNames as $c) {
$header[] = array(
'data' => $c,
'class' => strtolower(str_replace(' ', '-', $c)),
);
}
// generate table html
$html .= theme('table', $header, $rows);
return $html;
}
// then you can call it in your code...
function _MYMODULE_some_page_callback() {
$html = "";
$sql = "select * from {contact3}";
$html .= _MYMODULE_sql_to_table($sql);
return $html;
}
我假设您已经有一个用于创建数据的表单(无论它是什么)。然后,您可以扩展该表单以选择性地接收 id,如果有,则加载相应的数据,添加一个隐藏的(#type value)表单元素,其中包含 id 和相关的 #default_value 条目到您的表单中。然后,您必须在提交回调中弄清楚您是否有新条目(无 ID)或现有条目,并采取相应行动。
PS:我猜你有一个不使用节点系统的理由,那么这个就已经存在了。
PPS:你的代码完全不可读,你应该重新格式化。