আপনি যদি নোড_বজেক্ট_প্রিয়ার () কোডটি নোড_ফর্ম () নোড সম্পাদনা / তৈরি ফর্মের জন্য ফর্ম নির্মাতা ) থেকে দেখে থাকেন তবে দেখতে পাবেন যে এতে নীচের কোড রয়েছে:
// 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;
}
Hook_for_BASE_FORM_ID_alter () এর একটি প্রয়োগে, নিম্নলিখিত কোডটির মতো কোড ব্যবহার করা যথেষ্ট।
function mymodule_form_node_form_alter(&$form, &$form_state) {
$node = $form_state['node'];
if (!isset($node->nid) || isset($node->is_new)) {
// This is a new node.
}
else {
// This is not a new node.
}
}
যদি নোডটি নতুন হয়, তবে ফর্মটি নোড তৈরি করছে; যদি নোডটি নতুন না হয় তবে ফর্মটি একটি বিদ্যমান নোড সম্পাদনা করছে।
ড্রুপাল 8 এ, প্রতিটি শ্রেণি প্রয়োগকারী EntityInterface
(যার মধ্যে Node
শ্রেণি অন্তর্ভুক্ত ) EntityInterface::isNew()
পদ্ধতিটি প্রয়োগ করে । কোনও নোড নতুন কিনা তা পরীক্ষা করা কল করার মতোই সহজ হয়ে যায় $node->isNew()
। যেহেতু ড্রুপাল 8 এ $form_state['node']
আর নেই, কোডটি নিম্নলিখিত হয়ে যায়:
function mymodule_form_node_form_alter(&$form, &$form_state) {
$node = $form_state->getFormObject()->getEntity();
if ($node->isNew()) {
// This is a new node.
}
else {
// This is not a new node.
}
}