2009-11-08 5 views
1

Je suis un utilisateur débutant de gâteau et j'essaie de travailler sur une application déjà existante. Courir dans un problème lorsque je crée un nouveau contrôleur. J'ai créé StoreController et quand j'essaye d'appeler des méthodes dedans j'obtiens l'erreur ci-dessous. Il n'y a pas de 'magasins' de table, mais il semble que l'on essaie de charger automatiquement un modèle lié au contrôleur. Comment puis-je empêcher mon application d'essayer de charger un modèle pour ce contrôleur?Empêcher le contrôleur d'essayer de charger automatiquement le modèle

Missing Database Table 
Error: Database table stores for model Store was not found. 

Répondre

5

qui le fera, vous pouvez aussi simplement assigner à un tableau vide comme si

var $uses = array(); 
+0

+1 - en utilisant un tableau vide est la bonne approche. Je me souviens d'un problème avec la chaîne vide il y a quelque temps, mais cela a peut-être été corrigé depuis. – deizel

+0

J'ai eu ce problème avec une chaîne vide il y a un moment aussi, ça va marcher maintenant mais il vaut mieux prévenir que guérir! – Dean

0

Pensez Je l'ai trouvé ...

class StoreController extends AppController { 

// Do not preload any models, we will do this on demand to prevent waste. 
var $uses = ''; 
0

Si vous avez un AppController comme si ..

<?php 
    Class AppController extends Controller { 
     public $uses = array('GlobalModel'); 
    } 
?> 

Et vous utilisez un tableau vide ...

<?php 
    Class StoresController extends AppController { 
     public $uses = array(); 
    } 
?> 

Alors le StoresController aura toujours accès à l'GlobalModel du AppController

Si vous utilisez

<?php 
    Class StoresController extends AppController { 
     public $uses = ''; 
    } 
?> 

Alors le StoresController n'aura pas accès à tous les modèles.

Une bonne partie du temps où quelqu'un veut un contrôleur sans modèle, c'est parce qu'il ne veut pas associer le contrôleur à une table de base de données. Mais aux fins de rendre plus facile la validation des données soumises etc ce que vous voudrez peut-être à considérer est

<?php 
    Class StoresController extends AppModel { 
     public $name = "Stores"; 
     public $uses = array('Store'); 
    } 
?> 

<?php 
    Class Store extends AppModel { 
     public $name = "Store"; 
     public $useTable = false; 
    } 
?> 

Ensuite, vous pouvez utiliser le modèle :: _ propriété de schéma. C'est plus que ce que vous avez demandé, donc je vais vous laisser faire vos propres recherches sur _schema et valider les données qui ne seront pas traitées par une table DB.

http://book.cakephp.org/view/442/_schema

Questions connexes