0
votes

All, I have a problem with a new module development. Being a noob I need your kind help.

Info file
; $Id$
name="cities"
description="List of cities"
core=7.x

Module file

 <?php
    // $Id$

    /**
    *impliments hook_menu()
    */

    /**
    * @file
    * cities module
    .
    */



 function cities_menu()
    {


 $items=array();
    $items['cities']=array(
    'title' => 'Cities listed',
    'page callbacks' => 'cities_page',
    'access arguments'=>array('view content')
    );
    return $items;
    }

    /**
    *Build a from containing :
    *(1)Space to input volume
    *(2)A Submit ("Convert") button.
    */


    function cities_form($form,&$form_state){
$form['cities']=array(
'#type'=>'select',
'#title' => t('cities'),
'#size'=>5,
'#default_value' => array('City list' => 'City list'),
'#options' => array('Kolkata' => 'Kolkata', 'Mumbai' => 'Mumbai','Cnennai' => 'Cnennai', 'Srilanka' => 'Srilanka','Delhi' => 'Delhi', 'Siliguri' => 'Siliguri'),
'#description'=>t('The number of Cities listed here'),
);

$form['submit']=array(
'#type'=>'submit',
'#value'=>t('Get Val'),
);

return $form;
    }

    function cities_page($form,&$form_state)
         {


return cities_form('cities_form');

         }
    function cities_form_submit($form,&$form_state)
        {


$output=(
    $from_state['values']['default_value']);

    set_drupal_message($output);
         }
    ?>

But when I typed mysitename/cities in address bar it redirects me on localhost. Except these, I couldn't find any errors info in console.

Please help me to run my code.

Thanks.

2

2 Answers

0
votes

First guess:

<?php
function cities_menu() {
    $items['cities']=array(
    'title' => 'Cities listed',
    'page callbacks' => 'drupal_get_form',
    'page arguments' => array('cities_form'),
    'access arguments'=>array('view content'),
    );
    return $items;
    }
}

You have to call drupal_get_form to render the form correctly (as I see you use hook_form in cities_form, but you do not call drupal_get_form from cities_page. You do not need it either, because drupal_get_form (what is have to be used to render the form itself) is callable via hook_menu too).

So, with this hook_menu, you can simply skip cities_page function completely.

0
votes

The error free code for me

<?php
// $Id$

/**
*implements hook_menu()
*/

/**
* @file
* cities module
.
*/

function cities_menu() {
    $items['cities']=array(
    'title' => 'Cities listed',
    'page callback' => 'cities_form',
    'page arguments' => array('cities_form'),
    'access arguments'=>array('access content'),
    'type' => MENU_CALLBACK,
    );
    return $items;
}

function cities_form() {
    return drupal_get_form('cities_test_form');
}

function cities_test_form($form,&$form_state){
$form['cities']=array(

'#type'=>'select',
'#title' => t('The number of Cities listed here'),

'#default_value' => array('City list' => 'City list'),
'#options' => array('Kolkata' => 'Kolkata', 'Mumbai' => 'Mumbai','Cnennai' => 'Cnennai', 'Srilanka' => 'Srilanka','Delhi' => 'Delhi', 'Siliguri' => 'Siliguri'),

);

$form['submit']=array(
'#type'=>'submit',
'#value'=>t('Get Val'),
);

return $form;
}

function cities_test_form_submit($form_state, $form_values)
{
    $output = $form_values['values']['cities'];
    drupal_set_message($output);
}

?>