[development] Capturing $form array of a specific content type
Sam Tresler
sam at treslerdesigns.com
Fri Oct 15 18:41:19 UTC 2010
Thanks Earl. I tried that approach and am still getting the $form before CCK has added the additional elements, which is a little confusing to me, because ctools/includes/form.inc does seem to be intercepting close enough to render time to return it, so I'm guess I need a more populated $form_state to pass into the function (currently just using $form_state = array('want form' => TRUE,);)
I'm going to tinker away at it for a bit, but am close to manually creating the elements I need inside of my custom form, and submitting them n a custom _form_submit. I was mostly reluctant to do this because it involves a file upload with image cropper, and that seems an excessive amount to code when it already exists *somewhere*.
Incidentally, would a valid approach be to (*gasp*) hack core to store the form_array in question in memcache when a drupal_get_form is called, explicitly so I could pull it out of memcache with a var_get? I just thought of that, so maybe it's bunk.
Thanks again, and any advice is appreciated.
-Sam
On Thu, 14 Oct 2010, Earl Miles wrote:
> There is no easy way to get this with Drupal.
>
> If you're using CTools, you can use ctools_build_form with 'want form'
> => TRUE in the $form_state.
>
> On 10/14/2010 10:31 AM, Sam Tresler wrote:
>> Could be I am missing something easy here, but is there a standard way
>> to get the $form array of a node/add/* right before it would be
>> rendered. Basically, I want it after all the hook_form_alters ave
>> happened, but I want the array, not the html drupal_render generates?
>>
>> I'm working on a custom form that I want to potentially create several
>> nodes. I could just manually create the same fields and then deal with
>> the submit, but it seems to me that they must already exist *exactly*
>> how I want them anyway. Currently I have the following:
>>
>> function my_form($form, &$form_state) {
>> $my_form = array();
>>
>> // Some fields added to $my_form...
>>
>> $fake_node->type = 'my_content_type';
>>
>> $node_form = node_form(&$form_state, $fake_node);
>>
>> $form = array_merge($node_form, $form);
>>
>> //More fields added to $my_form...
>>
>> return $form;
>> }
>>
>> However, that just gives me the standard node fields, not the CCK fields
>> that exist in my_content_type.
>>
>> Thanks in advance if anyone can help.
>>
>> Sam Tresler
>> 646-246-8403
>
>
Sam Tresler
646-246-8403
More information about the development
mailing list