簡體   English   中英

在drupal 7中阻止沒有出現

[英]block in drupal 7 not showing up

我已經在一個區塊內創建了一個表單,第一次出現但它沒有再次顯示,我不知道為什么會發生這種情況,因為我對drupal很新。

     <?php

         function my_module_block_info() {
              $blocks = array();
              $blocks['my_block'] = array(
              'info' => t('My Custom Block'),
              );

              return $blocks;
         }
         function hook_block_view($delta = '') {
               switch ($delta) {
               case 'my_block':
               $block['subject'] = t('My form');
               $block['content'] = my_module_my_form();
         }
       }

       function my_module_menu() {
           $items = array();
           $items['my_module/form'] = array(
           'title' => t('My form'),
           'page callback' => 'my_module_form',
           'acess arguments' => array('access content'),
           'description' => t('My form'),
           'type' => MENU_CALLBACK,
           'access callback' => TRUE,
            );
       return $items;
           }

        function my_module_form() {
        return drupal_get_form('my_module_my_form');
            }

        function my_module_my_form($form) {

             $form['name'] = array(
             '#type' => 'textfield',
             '#title' => t('username'),
             '#required' => TRUE,
             '#description' => "enter your username.",
             '#size' => 20,
             '#maxlength' => 20,
             );
             $form['picture'] = array(
             '#type' => 'file',
             '#title' => t('Image'),
             '#description' => t('Upload a file, allowed extensions: jpg, jpeg, png, gif'),
              );
     $form['submit'] = array(
      '#type' => 'submit',
      '#value' => 'update your profile',
     );
     return $form;
 }

    function my_module_my_form_submit($form, &$form_state) {
     global $user;
     $account = user_load($user -> uid);
     $image_path = 'picture://';
      $validators = array(
      'file_validate_is_image' => array(),
       );
     $file = new StdClass();
         $file -> uid = $user -> uid;
         $file->uri = $image_path;
         $file = file_save_upload('picture', $validators);
     $new = array (
      'name' => $form_state['values']['name'],
      'picture' => $file,
      );
      user_save($account,$new );
    $message = 'You have updated your profile';
    drupal_set_message(t($message));
 }

此表單正在更新用戶名和用戶圖片,但是當我嘗試在塊中調用此表單作為其內容但在第一次之后它無法正常工作。請幫助我。

該功能存在許多問題

function hook_block_view($delta = '') {
  switch ($delta) {
    case 'my_block':
      $block['subject'] = t('My form');
      $block['content'] = my_module_my_form();
    }
}
  1. 你在這里寫一個hook_block_view()的實現,而不是鈎子本身,所以該函數應該被稱為my_module_block_view() ;
  2. $block['content']應該用渲染的表單填充,所以你需要調用my_module_form()而不是表單定義函數(就像在菜單鈎子中的頁面回調一樣);
  3. 你的功能不會返回任何東西! 你應該包括return $block; 在switch語句之后。

所以你的功能應該更好

function my_module_block_view($delta = '') {
  switch ($delta) {
    case 'my_block':
      $block['subject'] = t('My form');
      $block['content'] = my_module_form();
      break;
  }
  return $block;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM