That would work.
 
Nancy E. Wichmann, PMP
Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.




________________________________
From: Anth <[email protected]>
To: [email protected]
Sent: Fri, May 14, 2010 8:38:54 PM
Subject: Re: [development] Creating multiple login blocks with, different 
validation rules.

Hi Nancy,

OK, I'll do that :)  I haven't written a handbook entry before, but having a 
look is the best spot for it would under http://drupal.org/node/561062 do you 
think?

A.

On 6:59 AM, nan wich wrote:
> Great, Anthony. I suggest that you write up a little snippet page for the 
> Handbooks so it can be found with a search.
> BTW, remember the array_unshift technique, because you will need it again, 
> especially if you do any node_form alters. I worked that same one out some 
> time ago and am amazed at how many times I have to get my submit handlers to 
> fire first. I just had to do it again a couple of days ago on the 
> comment_form. So documenting this in the handbooks could save people a lot of 
> time in the future.
> 
> /*Nancy E. Wichmann, PMP*/
> 
> Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, 
> Jr.
> 
> 
> 
> ------------------------------------------------------------------------
> *From:* Anth <[email protected]>
> *To:* [email protected]
> *Sent:* Fri, May 14, 2010 2:02:50 AM
> *Subject:* Re: [development] Creating multiple login blocks with, different 
> validation rules.
> 
> Hi,
> 
> Thanks for the tips everyone. Worked it out, will describe what I ended up 
> doing in case it's useful to anyone.
> 
> Nancy and Earnie, I was using MultiBlock and the core of the problem for me 
> was that they *don't* change the $form_id so there is nothing to 
> differentiate them. Alex, yep, I'd started to look at hook_forms so your tip 
> was a good kick in the right direction. Lee, by the time I got your email I'd 
> worked it out :)
> 
> So as an example, I had to throw away MultiBlock and generate the blocks on 
> my own but it was pretty easy to do. My application is a timesheet 
> application and there is a role called 'candidate' that needed a separate 
> login. The only real problems I had after getting the hang of all that is for 
> some reason I had to shift my validation function into the first slot (see 
> comments in hook_form_alter) to get it to fire, and if I do a 
> form_set_error(), because the elements are the same name the red error border 
> appears on both, but hey I can live with that.
> 
> in my hook_block:
> 
> case 'view':
> $block['subject'] = 'Candidate Login';
> $block['content'] = drupal_get_form('candidate_login_block');
> return $block;
> 
> Now because 'candidate_login_block' doesn't exist as a function that can be 
> called by drupal_get_form I want drupal_get_form to be called as 
> drupal_get_form('user_login_block') and to make this happen I set up a 
> hook_forms (note, not hook_form) as below:
> 
> function timesheet_forms($form_id, $args) {
> $forms['candidate_login_block']['callback'] = 'user_login_block';
> return $forms;
> }
> 
> This all means that in my hook_form_alter I can do:
> 
> switch($form_id) {
> case 'candidate_login_block':
> // $form['#validate'][] = '_timesheet_candidate_login_validate';
> // The line above doesn't seem to result in my validation function getting 
> called so had to use the form below.
> array_unshift($form['#validate'], '_timesheet_candidate_login_validate');
> break;
> 
> In my function _timesheet_candidate_login_validate I can do whatever I want 
> to invalidate the form (I called user_load with the entered field and checked 
> its roles). Done.
> 
> Thanks,
> Anthony.
> 
> On 14/05/2010 3:37 PM, Lee Rowlands wrote:
> >
> > For a decent Hook_forms example look to ubercart’s uc_product, it uses 
> > hook_forms to register the ‘add to cart’ forms : 
> > http://api.lullabot.com/uc_product_forms
> >
> > *>* I think the answer about using hook_forms is the way to go, but last I 
> > looked the API docs were really bad on that hook.
> >

Reply via email to