drupal 7を使用しています
私はこのようなカスタムのhook_form_alterを書いています
function mymodule_form_alter(&$form, &$form_state, $form_id){
if($form_id == "rating_node_form")
{
// Do something
}
}
ノード追加フォームとノード編集フォームの両方が同じフォームIDを使用しているようです。ノードを編集または追加している天気を判断し、それに応じてフォームを変更する方法があるかどうか疑問に思っています。それらは常に同じ形式でなければなりませんか?
node_object_prepare() はnode_form()
(ノード編集フォームのフォームビルダー)から呼び出され、次のスニペットを実行して、ノードが追加または編集されているかどうかを確認します。
// If this is a new node, fill in the default values.
if (!isset($node->nid) || isset($node->is_new)) {
foreach (array('status', 'promote', 'sticky') as $key) {
// Multistep node forms might have filled in something already.
if (!isset($node->$key)) {
$node->$key = (int) in_array($key, $node_options);
}
}
global $user;
$node->uid = $user->uid;
$node->created = REQUEST_TIME;
}
あなたの場合、次のようなコードを使用できます:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == "rating_node_form") {
$node = $form_state['node'];
if (!isset($node->nid) || isset($node->is_new)) {
// The node is new.
}
}
}
または、2番目の引数arg(1) == 'add'
が
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'rating_node_form' && arg(1) == 'add') {
// Do something
}
}