Jump to content

Création de module - Aide - PS 1.5.2


olo

Recommended Posts

Bonjour, à tous,

 

Je tente de créer un module. Comme je débute je demarre de :

http://www.prestarocket.com/blog/creer-module-mvc-prestashop-1-5/

 

J'ai téléchargé le module en question et fait mes modifications.

 

Concernant l'arbo :

 

+--oloproductplayer

|oloproductplayer.php

|views

+...

|models

+--Oloplayer.php

|controllers

|admin

+...

+--adminoloplayer.php

 

J'ai une table : ps_oloplayer

 

adminoloplayer.php :

<?php
class AdminOloplayerController extends ModuleAdminController {

public function __construct() {

  $this->table   = 'oloplayer';
  $this->className  = 'Oloplayer';

 parent :: __construct();

 $this->fields_list = array(
  'id_mp3' => array(
   'title'  => '#'
  ),
  'id_product' => array(
   'title'  => $this->module->l('Product')
  ),
  'title' => array(
   'title'  => $this->module->l('link Track')
  ),
  'active' => array(
   'title'  => $this->module->l('Valider'),
   'active'  => 'status'
  )
 );

 $this->actions = array('delete');

}


}

 

Dans le model Oloplayer.php

 

<?php
class Oloplayer extends ObjectModel {

public $id_mp3;
public $id_product;
public $title;
public $url;
public $active;

public static $definition = array(
   'table'  => 'oloplayer',
   'primary'  => 'id_mp3',
   'multilang' => false,
  'fields' => array(
  'id_mp3' => array(
   'type' => ObjectModel :: TYPE_INT
  ),
  'id_product' => array(
   'type' => ObjectModel :: TYPE_INT,
   'required' => true
  ),
  'title' => array(
   'type' => ObjectModel :: TYPE_STRING,
   'required' => true
  ),
  'active' => array(
   'type'   => ObjectModel :: TYPE_BOOL,
   'required'  => true
  )
   ),
);

}

 

 

Pourtant cela ne fonctionne pas. j'ai l'entête et footer du back office au milieu : blanc.

Pire si je met une table ps_opinion et que je modifie dans l'adminoloplayer : $this->table = 'oloplayer'; en $this->table = 'opinion; là je retrouve bien la liste modifiable du tuto.

 

Quelqu'un peu m'aider ?

Link to comment
Share on other sites

le problème à mon sens (sans avoir fouillé non plus hein , juste à la lecture de ton code) c'est que tu fais référence dans ton admintab à

$this->module

Qui n'est définit nulle part dans ta classe :) .

 

Si ton module est nommé oloplayer alors essaye juste d'ajouter ça dans le constructeur de ton controller admin :

 

  $this->table   = 'oloplayer';
  $this->className  = 'Oloplayer';
  $this->module = 'oloplayer';
...

Link to comment
Share on other sites

Bonjour,

 

Merci d'avoir répondu, entre temps j'ai trouvé je pense la solution.

Après plusieurs test, je me suis rendu compte que le problème venait du lien entre la base et le module.

 

public static $definition = array(
   'table'  => 'oloplayer',
   'primary'  => 'id_mp3',

 

Je suis arrivée à la conclusion suivante : il faut respecter une convention de nommage : 'primary' => 'id_nom de la table'

 

Ainsi : cela fonctionne avec id_oloplayer.

 

J'espère que cela aidera les débutants comme moi. :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...