[development] a "form_initialize" function? (was "converting a module from Drupal 5 to Drupal 6")

yi yang yang_yi_cn at yahoo.com
Thu Jan 22 00:00:05 UTC 2009

I'll do 


function my_form() {
  if (everything_is_ok()) {
    $form = ...
    return $form;
  else {
   drupal_set_message("something bad happened.");
   return array();

--- On Wed, 1/21/09, Chris Johnson <cxjohnson at gmail.com> wrote:
From: Chris Johnson <cxjohnson at gmail.com>
Subject: Re: [development] a "form_initialize" function? (was "converting a module from Drupal 5 to Drupal 6")
To: development at drupal.org
Date: Wednesday, January 21, 2009, 3:40 PM

There has to be a better solution than a form_initialize() hook.  This
is not criticism directed at you, Sheryl.  But I think you've got a
use case that should be addressed, assuming there is not an existing
way to do it.  I may well be ignorant of the proper, Drupal-ish way of
handling this situation.


On Wed, Jan 21, 2009 at 4:12 PM, Sheryl (Permutations Software)
<sheryl at permutations.com> wrote:
> I figured out what the module code was trying to do by creating the error.
> It's actually not well implemented even in Drupal 5, but I don't
know if
> there is a function in Drupal to handle the case.
> When the administration form for the module is first loaded, the code
> to see if the module has been correctly installed. If it hasn't, it
> an error message at the top of the form. It attributes the error to the
> submit button just as a convenience. But the user still can see and submit
> the form. Ideally, there would be a form initialization function that
> checked that all was well before the form was even displayed. If all was
> well, the user would see the error message, but no admin form.
> I don't see a _form_initialize function anywhere in Drupal. Is it
> somewhere and I missed it? If not, it might be a good thing to add.
> In the meantime, how do I get the name of the submit button so I can use
> same technique the module is currently using, but rewritten for Drupal 6?
> The button is not explicitly defined anywhere in the code - it must be
> defaults. Also, according to the Drupal 6 docs, the name for buttons
> assigned by the system is 'op' - suggesting that the existing code
> already correct:
> http://api.drupal.org/api/file/developer/topics/forms_api_reference.html
> The following is a list of default values which do not need to be set
> in system_elements):
> button
> #name = 'op'
> #button_type = 'submit'
> #executes_submit_callback = FALSE
> #ahah['event'] = 'click'
> -------------------------------------
> Thus this statement is exactly correct for what I want to do, even in
> 6:
> form_set_error('op', 'error text');
> Am I missing something here?
> -----Original Message-----
> From: development-bounces at drupal.org
[mailto:development-bounces at drupal.org]
> On Behalf Of Jakob Petsovits
> Sent: Wednesday, January 21, 2009 2:09 PM
> To: development at drupal.org
> Subject: Re: [development] converting a module from Drupal 5 to Drupal 6
> On Wednesday, 21. January 2009, Steven Jones wrote:
>> Use form_set_error
>> (http://api.drupal.org/api/function/form_set_error/6) and call it with
>> the first parameter as 'NULL', then the error will be set on
the form
>> as a whole, not an individual element.
> form_set_error() encloses the error assignment in this if-condition:
> if (isset($name) && !isset($form[$name])) {
>  (...set the form error...)
> }
> which means when the first parameter ($name) is NULL then no error will be
> set.
> It seems you need to set the error for any of your form elements,
> the submit button in your case was used because the submit button was the
> only
> element that's remotely suitable for that error.
> You might use the actual submit button as error target in Drupal 6 (...I
> think
> that should work) by doing a form_set_error('mybuttonname',
t('message')) or
> -
> alternatively, same effect - form_error($form['mybuttonname'],
> t('message')).
> Cheers,
>  Jakob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20090121/7e933b35/attachment.htm 

More information about the development mailing list