Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
notice: Undefined property: stdClass::$format in drupal-6.x-dev\modules\node\node.module on line 1037.
when node does not have a body field then the node preview shows a PHP notice
repro:
1. clean install
2. admin/content/node-type/page clear the "Body field label" and save
3. node/add/page fill Title with anything and click preview
Comment | File | Size | Author |
---|---|---|---|
#10 | preview_contents_without_body-D7_0.patch | 750 bytes | swentel |
#7 | preview_contents_without_body-D7.patch | 677 bytes | swentel |
#5 | preview_contents_without_body-D7.patch | 728 bytes | swentel |
#4 | preivew_contents_without_body.patch | 483 bytes | qutoz |
Comments
Comment #1
webmasterkai CreditAttribution: webmasterkai commentedAny word on this?
Comment #2
qutoz CreditAttribution: qutoz commentedHi,
After making some researches and diving inside Drupal code, I got some ideas about what is happening there:
1- admin/content/node-type/page : clear the "Body field label" and save
2- node/add/page : "Input format" fieldset removed automatically, because it has nothing to do in case of "Body" field not there.
3- "Input format" fieldset contains 2 radio buttons (the name of radio group is "format").
4- When you click "Preview", actually the form is submitted, so the form values should be stored inside
$form_state['values']
variable as array.5-
$form
and$form_state
variables are passed tonode_form_build_preview
function (in node.pages.inc), which passes them tonode_form_submit_build_node
function to build$node
object, which passes them tonode_submit
function (defined in node.module), at this point exactly$node
object is built and created with properties, according to those posted by the form, so it may or may not contain the "format" property.6- After that,
$node
object is passed to series of functions, till it reaches "node_view" function (in node.module), where the error is happening due to line 1037:where the
$node->format
does not exist.Note: This is not happening in case of viewing the content type after submission, because
$node
object is loaded with "format" property by default.Currently I have 3 suggestions
1- In case that there's no "Body field", Drupal should keep the "Input format" fieldset with its radio buttons.
2- Building
$node
object in a way that it always contains "format" property.3- Preventing the submission of content type without "Body field" :)
If anyone of these suggestions, or even any other suggestions, is OK, I want to make the patch myself, if it is OK with you guys :)
Comment #3
Pasqualle1. no - I don't need a format when I do not need the body
2. yes
3. no - I need a content type without body
Comment #4
qutoz CreditAttribution: qutoz commentedHi,
Sorry for being late I just want to be sure that there are no new suggestions or comments.
Please take care that I added a new part in bold to my first comment.
So here is the patch and thanks for your patience.
Comment #5
swentel CreditAttribution: swentel commentedCan confirm this, this is also present in D7, so changing version. Patch in #4 fixes D6 branch, attached in #5 is for drupal head.
Comment #6
qutoz CreditAttribution: qutoz commentedThanks swentel for your attention. :)
Comment #7
swentel CreditAttribution: swentel commentedChasing HEAD
Comment #8
swentel CreditAttribution: swentel commentedTagging & bumping.
Comment #9
Damien Tournoud CreditAttribution: Damien Tournoud commentedA new argument for my "put body and format in a same element".
Format is an integer, this should be
$node->format = 0;
.Comment #10
swentel CreditAttribution: swentel commentedComment #11
catchLooks good the input format changes will likely change how this works anyway (and with tests), so RTBC.
Comment #12
webchickCommitted, thanks!
Moving down to 6.x.
Comment #13
Gábor HojtsyThanks, committed to Drupal 6 as well.