2012-05-16 3 views
0

본문 섹션의 페이지에 다음 코드가 있습니다.Drupal Form - 출력 없음

<?php 
function test_myform($form, &$form_state) { 

    $form['description'] = array(
    '#type' => 'item', 
    '#title' => t('A form with nothing but a textfield'), 
); 
    // This is the first form element. It's a textfield with a label, "Name" 
    $form['name'] = array(
    '#type' => 'textfield', 
    '#title' => t('Name'), 
); 
    return $form; 
} 
function test_page() { 
    return drupal_get_form('test_myform'); 
} 

test_page(); 

?> 

아무 것도 반환하지 않습니다. 아무 반응이 없습니다. 페이지가 비어 있습니다. 내가 뭘 놓치고 있니? 누구든지 저에게 손을 줄 수 있습니까?

답변

2

오신 것을 환영합니다 SO와 드루팔 양식 API (니스는 FAPI 호출 할 수 있지만 인터넷 밈을 알고)합니다. 먼저,이 양식을 작동시키는 데 필요한 Drupal 버전과이를 표시해야하는 곳을 알려주십시오.

좋은 시작 자습서는 http://drupal.org/node/751826을 참조하십시오. 드루팔 (Drupal 6)이라는 것을 잊지 마십시오. 특정 페이지 (예 :/myform)에 양식을 표시하려면 hook_menu()를 사용하여 경로를 등록해야합니다. 그렇다면 drupal_get_form을 콜백 함수로 사용하는 동안 폼을 프린트/에코 할 필요가 없습니다. 당신은 빌드 형태에 인수를 필요로하지 않습니다 -

양식 위로를 얻을 수있는 가장 쉬운 방법은 (. 그냥 내 생각 아무도는 쉽게 말한다) 블록에서 PHP 코드를 넣는 것입니다.

function test_myform(){ 
$form['description'] = array(
    '#type' => 'item', 
    '#title' => t('A form with nothing but a textfield'), 
); 
    // This is the first form element. It's a textfield with a label, "Name" 
    $form['name'] = array(
    '#type' => 'textfield', 
    '#title' => t('Name'), 
); 
    return $form; 
} 

이제 test_myform()에서 호출 할 수있는 양식 배열이 있습니다. 응?

이 양식을 사용하여 표시하십시오.

return drupal_get_form('my_form'); 

그러면 이미 시도한 코드와 동일한 코드가 표시됩니다. 그것이 버전이 유용 할 곳입니다. 이것은 D6에서는 작동하지만 더 이상 D7에서는 작동하지 않습니다. 지금보십시오 :

return drupal_render(drupal_get_form('my_form')); 

참조?

이 코드는 PHP 블록에서 사용된다는 점에 유의하십시오. PHP 필터 모듈을 사용하도록 권장하지는 않지만 양식을 얻으려면 그렇게해야합니다.

가장 좋은 방법은 자신의 블록 또는 메뉴 콜백을 정의하여 양식을 얻는 것입니다. 경로를 등록하는 방법은 http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_menu/7을 참조하십시오. 이제는 코드로 인수를 받아들이도록 test_myform() 함수를 만들어야합니다. 페이지 콜백은 drupal_get_form이어야하며 표시된 양식을 얻으려면 drupal_render()이 필요하지 않습니다.

1

실제로 아무 것도 출력하지 않습니다. 함수에서 $form 배열 또는 객체를 만들고 반환하지만 다른 코드에서 아무 것도 출력하거나 출력하지 않습니다.

UPDATE는

이 기능에 대한 문서에서 빠른보기는 양식 마크 업이 함수에 의해 반환되는 것을 시사한다.

echo drupal_get_form('test_myform'); 

기본적으로, drupal_get_form 양식의 내용을 반환하고, 어떤 방법으로 출력을 당신에게 달렸어요 : 그래서 당신은 테스트 페이지 기능을 떠날 경우,이 시도. 이 도움이

+0

그러면이 양식을 실제로 어떻게 출력 할 수 있습니까? 실제로 사용자가 "설명"과 "이름"을 채우도록하십시오. 나는 이걸 두어 시간 동안 찾지 못했다. –

+0

Drupal 양식에 대한 API 문서가 있습니까? 왜냐하면 당신은 아무것도하지 않고 배열을 만드는 것처럼 보이지 않기 때문입니다. –

+0

나는 Drupal 웹 사이트에서 예제를 사용 해왔다. 이것이 그들이 말하는 전부입니다. 전체 작동 예제와 같은 실용적인 예제와는 대조적으로 매우 높은 수준의 설명. 나는 PHP와 drupal에 익숙하지 않지만, 비행 중에 배우는 데 어려움을 겪은 적은 한번도 없었다. –

0

희망 :

 
change the function line as below: 
function test_myform() { //no need to add any arguments if you are not using 


secondly either directly print the form using the line below 
print drupal_get_form('test_myform'); 

or use the function to return the form html and print it 
print test_page(); 
+1

이것이 왜 downvoted인지 모르겠지만이 코드를 블록에 넣으려고하는 경우에는 이것이 정확합니다. Upvoted. –

+0

고마워요 :) – nikunj