繁体   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