Bonjour,
J'aimerais pouvoir faire une API pour communiquer avec mon application cake. L'application elle même ne gérera qu'une partie du back office du site, le reste étant géré par des CMS classique, wordpress, drupal ou consort.
Je voudrais donc faire un fichier de librairie accessible aux intégrateurs, pour interagir avec mon application (lecture de donnée principalement).
Il faudrait donc que depuis un fichier externe à l'application je puisse charger des modèles de l'application, et forcément si je ne fais qu'un include de mon modèle, il ne trouve pas AppModel, puis App. Existe t il un fichier dans cake à charger pour que ça initialise le tout, et donc que je puisse inclure mes modèles tranquillement par la suite.
Pas sur d'être bien clair donc un exemple sera peut être plus clair, mon application va gérer des médias, l'intégrateur veut la liste de tout les médias, je ne veux qu'il n'est à saisir que :
include('***/lib.php');
$medias = getMedias();
A moi de faire en sorte que le fichier lib.php puisse charger le modele Media puis lance une de ces fonctions.
Je voyais un code de ce genre :
include ('***/app/Model/Photo.php');
function getMedias() {
$model = new Media();
return $model->someFunction();
}
Comment faire en sorte d'avoir ce fonctionnement?
Je suis reparti de ce qu'il y avait dans l'index du webroot, j'ai donc ajouté le code suivant à mon fichier lib.php :
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT')) {
define('ROOT', ' ***** /app');
}
if (!defined('APP_DIR')) {
define('APP_DIR','');
}
if (!defined('WEBROOT_DIR')) {
define('WEBROOT_DIR', basename(dirname( __FILE__ )));
}
if (!defined('WWW_ROOT')) {
define('WWW_ROOT', dirname( __FILE__ ) . DS);
}
define('CAKE_CORE_INCLUDE_PATH', ' **** /cake/lib');
include CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php';
include_once(' **** /Model/Photo.php');
il y a des ***** parce qu'il s'agit de lien perso sur mon serveur.., mais les liens sont bien OK
Le souci c'est que même en faisant appel à un model, je me prends la fenetre de connexion (redirection vers /users/login)
des idées pour avancer??
J'ai également essayer de remplacer le include par
App::uses('Photo', 'Model');
mais sans succès...
Ce serait stupide d'aller directement chercher les infos dans la base de donnée quand même...