Bonjour à tous,
je débute avec cake PHP. j'ai réalisé une application avec cake. elle fonctionne correctement en local.
je l'ai uploder sur Gandi. La bas les données ne s'affichent pas correctement sur la page qui liste les hotels
et celle qui liste les restaurants. j'ai aussi des erreurs quand j'essaie d'ajouter un hotel ou un restaurant.

je vous explique:
j'ai les modeles suivant Hotel,Restaurant,Commune,Standing
voici les relations entre les modeles :

Restaurant belongsTo Commune et Commune hasMany Restaurant

Hotel belongsTo Commune et Commune hasMany Hotel

Hotel belongsTo Standing et Standing hasMany Hotel

modele Restaurant
<?php
App::uses('MyhotelAppModel', 'Myhotel.Model');

class Restaurant extends MyhotelAppModel
{
var $name = "Restaurant";

public $belongsTo = array(
'Commune' => array(
'className' => 'Commune',
'foreignKey' => 'commune_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
}
?>

modele Commune
<?php
App::uses('MyhotelAppModel', 'Myhotel.Model');

class Commune extends MyhotelAppModel
{
var $name = "Commune";
public $hasMany = array(
'Hotel' => array(
'className' => 'Hotel',
'foreignKey' => 'commune_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'Restaurant' => array(
'className' => 'Restaurant',
'foreignKey' => 'commune_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
}
?>

modele Hotel
<?php
App::uses('MyhotelAppModel', 'Myhotel.Model');

class Hotel extends MyhotelAppModel
{
var $name = "Hotel";
public $belongsTo = array(
'Commune' => array(
'className' => 'Commune',
'foreignKey' => 'commune_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''),
'Standing' => array(
'className' => 'Standing',
'foreignKey' => 'standing_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => '')
);
}
?>

modele Standing
<?php
App::uses('MyhotelAppModel', 'Myhotel.Model');

class Standing extends MyhotelAppModel
{
var $name = "Standing";

public $hasMany = array(
'Hotel' => array(
'className' => 'Hotel',
'foreignKey' => 'standing_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
}
?>

fonction add de RestaurantsController

public function add() {
$errors = array();

if ($this->request->is('post')) {
$this->Restaurant->create();
if ($this->Restaurant->save($this->request->data)) {
$this->Cookie->delete('srcPassArg');
$this->redirect(array('action' => 'index'));
} else {
$errors = $this->Restaurant->validationErrors;
}
}
Line: 154 $communes = $this->Restaurant->Commune->find('list',array('fields' => array('Commune.id', 'Commune.libelle')));
$this->set('errors',$errors);
$this->set(compact('communes'));
}

fonction add de HotelsController
public function add() {
$errors = array();

if ($this->request->is('post')) {
$this->Hotel->create();
if ($this->Hotel->save($this->request->data)) {
$this->Cookie->delete('srcPassArg');
$this->redirect(array('action' => 'index'));
} else {
$errors = $this->Hotel->validationErrors;
}
}

Line: 157 $communes = $this->Hotel->Commune->find('list',array('fields' => array('Commune.id','Commune.libelle')));
$standings = $this->Hotel->Standing->find('list',array('fields' => array('Standing.id','Standing.libelle')));

$this->set('errors',$errors);
$this->set(compact('communes','standings'));
}

quand je veux ajouter un restaurant cette erreur s'affiche
Error: Call to a member function find() on a non-object
File: /srv/data/web/vhosts/www.websolux.net/htdocs/orangeapps/app/Plugin/Myhotel/Controller/RestaurantsController.php
Line: 154

quand j’essaie ajouter un hotel cette erreur s'affiche
Error: Call to a member function find() on a non-object
File: /srv/data/web/vhosts/www.websolux.net/htdocs/orangeapps/app/Plugin/Myhotel/Controller/HotelsController.php
Line: 157

sur la page qui liste les hotels j'ai cette erreur :
Notice (8): Undefined index: Commune [APP/Plugin/Myhotel/View/Hotels/index.ctp, line 117]

code d'affichage : <td style="text-align: left;"><?php echo h($hotel'Commune']'libelle']); ?></td>

sur la page qui liste les restaurants j'ai cette erreur :
Notice (8): Undefined index: Commune [APP/Plugin/Myhotel/View/Restaurants/index.ctp, line 117]

code d'affichage : <td style="text-align: left;"><?php echo h($restaurant'Commune']'libelle']); ?></td>

en fait j'affiche le libellé de la commune ou se situe l'hotel ou le restaurant (commune_id est une clé etrangère de hotels et de restaurants)

Quelqu'un peut il m'aider ?
je rappel que tout fonctionne bien quand je suis en local.
les erreurs apparaissent lorsque je suis en ligne sur un serveur Gandi.
j'ai aussi les mêmes erreurs quand j’héberge mon application sur cpanel.

J'espère que j'ai été explicite dans mon explication.

Merci d'avance

2 réponses


Melkicdek
Auteur
Réponse acceptée

Salut à tous C Melkicdek
j'ai trouvé la solution à mon problème.
En fait en local c'est Windows, et sur le serveur distant c'est Linux
la plupart des problèmes de passage de WAMP à LAMP c'est parce que Windows n'est pas case sensitive tandis que Linux oui.
les fichiers de mes modeles etaient écris totalement en minuscule or je devais commencer par une lettre majuscule
Ex: Commnue.php et non pas commune.php.

Merci à GrafikFan pour m'avoir accordé un peu de son temps.

Merci à tous.

Salut,
les versions php sont les mêmes ?