install_schema() - Mégsincs adatbázis tábla

Keveqiah képe

Tudom, hogy volt már téma, át is néztem mindet, de az .install fájlban lévő drupa_install_schema() valahogy mégsem fut le. (Vagyis azt sem tudom lefut e egyáltalán)

.install

function g_theme_schema() {
  $schema = array();
 
  $schema['gdt_smink'] = array(
    'fields' => array(
      'gdt_id' => array(
        'type' => 'int',
        'unsigned' => true,
        'not null' => true,
      ),
      'gdt_themename' => array(
        'type' => 'varchar',
        'length' => 32,
        'not null' => true,
      ),
      'gdt_import' => array( // see: user install created
        'type' => 'int',
        'not null' => true,
      ),
      'gdt_importfiles' => array( // see: user install created
        'type' => 'int',
        'not null' => true,
      ),
    ),
    'primary key' => array('gdt_id'),
  );
 
  return $schema;
}
 
function g_theme_install()
{
      drupal_install_schema('gdt_smink');
}
 
function g_theme_uninstall()
{
	db_query('DELETE FROM {system} WHERE name = "modulname"');
	drupal_uninstall_schema('gdt_smink');
}

A modult kikapcsoltam, uninstalláltam, töröltem, a system táblából is töröltem a modulra vonatkozó rekordot, visszamásoltam, bekapcsoltam és semmi. Se tábla, se új rekord felvitel..
Van valakinek ötlete, mitől lehet és hogyan lehetne orvosolni?

Ha manuálisan db_query()-vel hozom létre a táblát, működik, viszont az automatikus uninstall ilyenkor sem megy [db_query(drop table... ].

Drupal verzió: 
hosszu.kalman képe

A drupal_install_schema() a modul nevét tartalmazó string-et várja paraméternek, azaz ha a modulod neve g_theme akkor így kell meghívni:

function g_theme_install() {
  drupal_install_schema('g_theme');
}

A Drupal Coding Standards-re pedig szerintem figyelj oda.

0
0
Keveqiah képe

A telepítés megy, már csak azt nem értem, hogy az uninstall miért nem hajtódik végre.

Jelenleg ezt futtatnám le a modul kikapcsolásakor, de nem történik semmi, viszont a Devel uninstall használatával már törlődik minden, viszont hibaüzenet is jön, hogy a tábla már nem létezik. Akkor most mi is fut le? :D Vagy csak a Cache-t kellene üríteni az _uninstall() futásakor?

function g_theme_uninstall() {
  drupal_uninstall_schema('g_theme');
  db_query('DELETE FROM {system} WHERE name = "g_theme"');
  db_query('DROP TABLE {gdt_smink}');
}

A Coding Standards-t pedig már néztem, de ha abba is beleköt a rendszer, hogy átláthatóbb a kódom, mert nem csak két szóköz a behúzás, az már szőrszálhasogatás. Bár ezt fejlesztője válogatja, hogy kinek mi az átláthatóbb és milyen Standerdet követ. De köszönöm. :)

0
0
hosszu.kalman képe

A két db_query fölösleges, nincs rá szükség. A drupal_uninstall_schema() fgv elintézi a tábla(ák) törlését, ezért a DROP TABLE már hibát dob.

A kódolási stílusodba a rendszer nem köt bele - amennyiben nem futtatod rá a coder modult - de átláthatóbbnak biztos nem az. A Drupal-nak vannak sztenderdjei amiket érdemes (és illik) betartani, mivel közösségi fejlesztésről van szó.

0
0
zschopper képe

Jelenleg ezt futtatnám le a modul kikapcsolásakor
Ez a kód akkor fut le, amikor eltávolítod a modult (/admin/build/modules/uninstall), nem amikor kikapcsolod.

A standard-ek azért vannak, hogy ha más tartja karban a kódodat, akkor a felmenőid ne kapjanak csuklási rohamot. ;)

Az pedig tudvalevő, hogy egy kódot hatványozottan többször olvasnak, mint ahányszor módosítanak rajta. Én akárhány programozási környezetben dolgoztam mindig igyekeztem követni a hivatalos (v. a munkahelyi) ajánlásokat. Egy ideig mindig eltartott, mire ráállt a szemem, de úgy érzem, hogy mindig megérte hosszútávon.

0
0