[development] The Drupal Diet - Making bootstrap faster

Larry Garfield larry at garfieldtech.com
Fri May 4 21:19:59 UTC 2007


On Fri, 04 May 2007 11:15:12 -0700, Earl Miles <merlin at logrus.com> wrote:
> Larry Garfield wrote:
>> 1) Forms that are used as a page handler, if factored out to separate
> files,
>> may never be called from drupal_execute().  I do not consider this
>> acceptable.
> 
> This doesn't follow. If I put my form in foo.pages.inc and use
> drupal_get_form
> as the callback, and provide my include so that my foo.pages.inc is loaded
> when
> that menu is hit, my form will be there. This, of course, isn't true if
> this
> form is also available in a non-page-context, which can happen, but in
> that
> case the form should be embedded into the .module anyway.

drupal_execute() is a non-page context.  

Take for example node_type_form, the form function for which is node_form.  It's a non-settings-page form that is used as a parameter to a callback on drupal_get_form, and is rarely used but reasonably large so it's a great candidate for factoring out of the main node.module file.

If we factor it out into a pages include file for the node module, then it gets loaded when a user visits admin/content/types/page.  Great.  

What happens, though, if someone calls drupal_execute('node_type_form', ...)?  How does the system know where to find that form and how to load it if drupal_execute() doesn't have some knowledge of where forms live?  Either drupal_get_form() and drupal_execute() have to be able to dynamically load the form or that form now becomes inaccessible except through the page handler.  

If you have a suggestion for how to factor page forms out into separate files but not have a form-loading system without breaking drupal_execute() please share it, because I can't think of one.

>> I want to emphasize that "where appropriate".  Not all handlers or forms
>> should be split out into separate files.  For instance, I'd argue the
> most
>> often used page handler is node_view(), and the most often used forms
> are the
>> login block and search block.  We should *not* split those out into
> separate
>> files.  They're used often enough that their extra weight on other page
> loads
> 
> You actually mean node_page(), not node_view() =)

Yes.  Yes I do. :-)

--Larry Garfield



More information about the development mailing list