Не удается открыть форму редактирования из моего пользовательского модуля (начало разработки модуля) - PullRequest
0 голосов
/ 28 июля 2011

Я новичок в области разработки модулей и столкнулся с проблемой. Я создал файл .module с функцией hook_menu, имеющей следующий фрагмент кода: -

  $items['game/add_tournament/view_tournament']=array(          
 'title'=>'View Tournament',
 'description'=>'Tournament View',
 'page callback'=>'game_view_tournament_page',
 'access callback'  => 'user_access',
 );

Обратный вызов моей страницы следующий: -

 function game_view_tournament_page() {         
  $header_table_edit = array( 
// first cell has the following text 'Title' 
 array('data' => t('Tournament Name')), 
// second cell has the following text 'Link to edit'
array('data' => t('No of Weeks')),

array('data' => t('Start Date')),

array('data' => t('End Date')),

array('data' => t('Edit'))
);

$query = db_query


( "select tournament_id ,tournament_name ,tournament_no_of_weeks ,tournament_start_date ,tournament_end_date from {tournaments} ");


   while ($data = db_fetch_object($query)) 
{
    $rows_table_edit[] =  array(
    array('data' => l($data->tournament_name,   'game/add_tournament/view_tournament/' . $data -> tournament_id)),
    array('data' => t($data->tournament_no_of_weeks)),
    array('data' => t($data->tournament_start_date)),
    array('data' => t($data->tournament_end_date)),  
    array('data' => l(t('Edit'),'game_tournament_edit/'.$data -> tournament_id.'/edit')) ); 
}


   $caption_table_edit = t('Table for edit nodes');

    return theme('table', $header_table_edit, $rows_table_edit);
}

До этого момента сайт работал нормально. Теперь приходит проблема. В этой точке я предполагаю, что при нажатии кнопки редактирования будет вызван другой обратный вызов, и этот обратный вызов также должен быть зарегистрирован в моей функции hook_menu. Здесь я не знаю, если этот метод вызывается обратно или нет. Так как каждый раз, когда я нажимаю кнопку редактирования, я получаю страницу не найдена. Ниже приводится обратный звонок

  $items['game_week_edit/%game_abc/edit']=array(            
'type' => MENU_LOCAL_TASK,   
 'access arguments' => array('access content'),
    'page callback' => 'game_week_edit_page',
    'page arguments' => array(1),
    );

  // The above code is in hook_menu function and the following code is outside hook_menu . Let me know if i am doing anything wrong.

 function game_week_edit_page($abc_id){
return drupal_get_form('game_week_edit_form',$abc_id);
     }


   function game_week_edit_form( &$form_state, $abc_id) {           
$form = array();

$options = array();
$sql = "SELECT game_week_id,tournament_id,start_time,open_time,close_time FROM {game_week} where game_week_id='$abc_id'";
$r = db_query($sql);

$sql_tournament = "SELECT tournament_name FROM {tournaments} ";
$r_tournament = db_query($sql_tournament);


       while ($row = db_fetch_array($r_tournament)) {
$options[$row['tournament_name']] = $row['tournament_name'];
}

while ($row = db_fetch_object($r)) 
{
 $form['tournament_name'] = array(
       '#type' => 'select',
       '#required'=>true,
       '#title' => t('Select Tournament'),
       '#options' => $options,
         '#weight'=>1,
         '#description' => t('<br>'),
       );
$form['start_time'] = array(
      '#type' => 'textfield',
      '#required'=>true,
      '#value'=>t($row->start_time),
      '#title' => t('Enter Start Time'),
      '#size'=>40,
      '#maxlength'=>128,
      '#weight'=>2,
      '#description' => t('Please enter start time.'),
      );

$form['open_time'] = array(
      '#type' => 'textfield',
      '#required'=>true,
      '#value'=>t($row->open_time),
      '#title' => t('Enter Tournament Start Time'),
      '#size'=>40,
      '#maxlength'=>128,
      '#weight'=>3,
      '#description' => t('Booking open time.'),
      );
$form['close_time'] = array(
      '#type' => 'textfield',
      '#required'=>true,
      '#value'=> t($row->close_time),
      '#title' => t('Booking close time'),
      '#size'=>40,
      '#maxlength'=>128,
      '#weight'=>4,
      '#description' => t('Booking close time.'),
      );

$form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Update Tournament'),
      '#weight'=>5
     );
}
return $form;
}

1 Ответ

0 голосов
/ 29 июля 2011

В hook_menu, старайтесь не называть свой шаблон в элементе редактирования.«% game_abc» говорит Drupal вызвать функцию «game_abc_load» (то есть имя, добавляемое «_load») и использовать возвращаемое значение в качестве первого аргумента для обратного вызова вашей страницы «game_week_edit_page».Если у вас нет такой функции, будут проблемы.

В этом случае похоже, что вы просто хотите передать целочисленный идентификатор, и в этом случае вы можете просто использовать "%".

...