简体   繁体   English

Drupal第一个模块-500 Internal Server Error

[英]Drupal first module — 500 Internal Server Error

This is my first module. 这是我的第一个模块。 I have been trying to successfully install my module since a week now. 从一个星期开始,我一直在尝试成功安装模块。

I have gone through every line. 我经历了每一行。 Even the schema is being installed and entry is made at system table. 甚至正在安装模式,并在系统表中进行输入。 But still after enabling the module It shows 500 Internal Server Error until I delete the entry from system table. 但是在启用该模块之后,它仍然显示500 Internal Server Error,直到我从系统表中删除该条目。

Please guide me what I am doing wrong. 请指导我我在做什么错。

Note: sisattribute table is already created in drupal database 注意:sisattribute表已在drupal数据库中创建

My .install file 我的.install文件

<?php

/**
* @file
*/

function sisinstitute_install() {
 drupal_install_schema('sisinstitute');
 variable_set('node_options_sisinstitute', array('status'));

 $attributes = array();

 $attributes['Country'] = array(
  'US' => 'United States of America',
  'AD' => 'Andorra',
  'AE' => 'United Arab Emirates',
  'AF' => 'Afghanistan',
 );

$s = "INSERT INTO {sisattribute} (domain, akey, avalue, weight) VALUES ('%s', '%s', '%s', %d)";
$prevdomain = '';
$weight = 0;
foreach ($attributes as $domain => $attribute) {
if ($domain != $prevdomain) $weight=0;
foreach ($attribute as $key => $value) {
  db_query($s, $domain, $key, $value, $weight);
  $weight++;
}
$prevdomain = $domain;
}
}

function sisinstitute_disable() {
drupal_set_message(t('Please note that they will now have reduced functionality, and will not be protected by previous access controls.'), 'warning');
}

function sisinstitute_uninstall() {
 drupal_uninstall_schema('sisinstitute');

db_query($s = "DELETE FROM {sisattribute} WHERE domain IN ('Country')");
}

function sisinstitute_schema() {
  $schema['sisinstitute'] = array(
   'fields'        => array(
    'vid'         => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
    'nid'         => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
    'country'     => array('type' => 'varchar', 'length' => 100),
    'www'         => array('type' => 'varchar', 'length' => 100),
    'phone'       => array('type' => 'varchar', 'length' => 100),
    'email'       => array('type' => 'varchar', 'length' => 50),
    'provstate'   => array('type' => 'varchar', 'length' => 50),
    'zip'         => array('type' => 'varchar', 'length' => 10),
    'city'        => array('type' => 'varchar', 'length' => 100),
    'address'     => array('type' => 'varchar', 'length' => 100),
    'orglanguage' => array('type' => 'varchar', 'length' => 100),
    'isactive'    => array('type' => 'int', 'default' => 1),

  ),
  'primary key' => array('vid'),
  'indexes' => array(
  'nid'     => array('nid')
  ),
  );

  return $schema; 
  }

And my .module file: 和我的.module文件:

<?php
// $Id$

/**
*@File
*Module for Institution support in SIS package
*/


/**
*hook_help()
*/


/**
*hook_menu()
*/




/**
*hook_perm()
*/
function sisinstitute_perm() {
  return array('access institute', 'create institute', 'edit institute', 'delete institute', 'view belonged institute', 'view all institutes');

}






/**
*hook_access()
*/
function sisinstitute_access($op, $node. $account=NULL) {
 if (empty($account)) {
  global $user;
  $account = $user;
 }

 if (is_numeric($node)) $node = node_load($node);

 if (!isset($account->sisinstitute_nid) && module_exists('sisstudent')) {
  _sisstudent_load($account);
 }

 if (!isset($account->sisinstitute_nid) && module_exists('sisstaff')) {
  _sisstaff_load($account);
 }

 switch($op) {
  case 'create': return user_access('create institute', $account);
  case 'update': return user_access('edit institute', $account);
  case 'delete': return user_access('delete institute', $account);
  case 'view'  : {
                  if (user_access('view all institutes', $account))
                    return TRUE;
                  elseif (user_access('view belonged institute', $account) && $account->sisinstitute_nid == $node->nid)
                    return TRUE;
                  else return FALSE;
                 }
 }
}




/**
*hook_node_info()
*/

function sisinstitute_node_info() {
 return array(
  'sisinstitute' => array(
  'name' => t('Institute'),
  'module' => 'sisinstitute',
  'description' => t("Institute for SIS"),
  'title_label' => t("Name"),
  'body_label' => t("Note"),
)
);

}



/**
*hook_form()
*/
function sisinstitute_form(&$node) {
 $type = node_get_types('type', $node);

 //$form['#attributes']['class'] = 'sismcomponent_node_form';

 $form['title'] = array(
  '#type' => 'textfield',
  '#title' => check_plain($type->title_label),
  '#required' => TRUE,
  '#default_value' => $node->title,
  // '#weight' => module_exists('content') ? content_extra_field_weight($node->type, 'title') : -18,
  );


$form['isactive'] = array(
 '#type' => 'checkbox',
 '#title' => t('Active'),
 '#default_value' => $node->isactive,
);

return $form;
}

Hmm Got it:-)(after 8 hours) 嗯,明白了:-)(8小时后)

function sisinstitute_access($op, $node. $account=NULL) { 函数sisinstitute_access($ op,$ node。$ account = NULL){

has a period instead of a comma after $node $ node之后有一个句点而不是逗号

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM