Je me demande si c'etait correcte de mettre cakephp dans le repertoire vendor au meme niveau que le forum de miles.
{
"name": "example-app",
"require": {
"cakephp/cakephp": "2.6.*",
"mjohnson/forum": "4.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
Comment demander dans le composer, qu'il me place app dans le repertoire htdocs ?
Merci pour vos idées
L'application CakePHP sera installé à partir de l'endroit de ton serveur où se situe le fichier composer.json.
Quand je parle de l'application CakePHP, je parle bien sûr du squelette :
Donc, si par exemple dans ton serveur, tu as ton fichier composer.json dans le dossier htdocs/mon-app, tu auras la structure suivante :
"htdocs" étant le dossier dans lequel tu veux que ton application CakePHP se trouve et "mon-app" étant le dossier de ton application.
Bonjour.
Tu ne sembles pas avoir compris le fonctionnement de composer.
De plus, que le forum dont tu parles, est un Plugin et non une application CakePHP, et selon le fichier composer.json que tu nous montre, cela veut simplement dire que le core de CakePHP sera copié dans le dossier Vendor de ton application CakePHP.
Sans oublier, que le plugin est depuis quelque temps déprécié.
Le fichier composer.json ne définit pas où sera installé ton application CakePHP sur ton serveur.
Je te recommande de bien relire l'installation avancée de CakePHP avec Composer, tu devrais mieux comprendre comment ça fonctionne.
Je n'ai pas compris .
j'ai fait un copié collé de la doc de cake pour composer, quand au plug in , auquel j'ai ajouté celle de miles.
{
"config": {
"vendor-dir": "Vendor"
},
"require": {
"mjohnson/forum": "4.*"
}
}
oui c'est un plugin et si le fichier composer est indiqué comme suit, je pense que ca avait c'est raison
j'y comprends encore moins, car en lancant composer install il a juste crée un repertoire Vendor dans lequel il a mis cakephp/cakephp .
mais les remarques me font pensé a des choses que je vais essayer de ce pas
Si tu ne fais que composer install, c'est normal, il ne t'installera que la librairie de CakePHP, continues à lire la documentation pour installer le squelette de l'application.
ah ok.
je me demandais comment faire pour empiler les fichier de cakephp et du plug in du forum ?
ou en general , comment les empiler tout court
par contre je n'ai pas compris ce que tu as dit pour lire la doc ? il y a seulement un paragraphe
http://book.cakephp.org/2.0/fr/installation/advanced-installation.html
À la base, avec l'installateur de CakePHP pour composer, composer installera les dépendances et autres dans les dossiers correspondants.
À partir du moment où le fichier composer.json de la ressource à installer, contient bien de quel type de ressource il s'agit, l'installateur saura où il doit copier les dossiers/fichiers.
Par exemple pour ton cas, il copiera les dossiers/fichiers, dans le dossier : Plugin/Forum.
Mais comment saura t'il si je ne lui precise pas que c'est dans le repertoire plugin ?
je viens de tester ca
{
"name": "example-app",
"require": {
"cakephp/cakephp": "2.6.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
et ca ne m'a pas crée un dossier example-app
Une fois que Composer a terminé son exécution, vous devriez avoir une structure de répertoire qui ressemble à :
Ensuite, il y a :
Vous êtes maintenant prêt à générer le reste du squelette de votre application:
$ Vendor/bin/cake bake project <path to project>
Tu n'aurais pas oublié cette seconde partie par hasard ?
si , si , mais je pensais que tout etait automatiquement fait, comme un script shell qui irait tout installer.
parce que la, du coup, je trouve pas l'interet par rapport a la methode classique qui consiste a depiler le zip de la source et c'est fini.
ca ressemble a une prise de tete. Parce que je m'imaginais installer le forum tout d'un coup, sans phase manuelle.
Mais comment saura t'il si je ne lui precise pas que c'est dans le repertoire plugin ?
Parce que dans l'installateur de composer pour CakePHP (qui se trouve dans : Vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php), il y a les définitions de sources pour les type de ressources à installer, et comme tu peux le voir dans le fichier composer.json du plugin Forum, il y a :
"type": "cakephp-plugin"
Donc en cherchant dans l'installer Composer de CakePHP, il saura qu'il doit l'installer dans le dossier : 'plugin' => 'Plugin/{$name}/'.
et ca ne m'a pas crée un dossier example-app
C'est normal, ton fichier composer.json, doit se situer dans le dossier dans lequel se trouvera ton application CakePHP, si tu relis ma réponse dans lequel je t'en parle :
Donc, si par exemple dans ton serveur, tu as ton fichier composer.json dans le dossier htdocs/mon-app
mon-app correspondant par exemple à example-app dans ton composer.json.
Il ne te créera pas le dossier example-app.
Parce que je m'imaginais installer le forum tout d'un coup, sans phase manuelle.
Non, car déjà pour le Plugin Forum, il y a les dépendances également à installer (Admin, Utility et Decoda), dont le dernier n'est pas un Plugin, si je ne m'abuse, ce qui n'est pas forcément automatique dès le début, et puis il te faudra quand même préciser certains trucs, tout comme instancier les plugins (celui du forum y compris) dans le fichier bootstrap.php de ton application.
Il ne faut pas oublier, que CakePHP est un Framework et non un CMS.
L'avantage de l'installation de CakePHP et de dépendances supplémentaires avec Composer, c'est qu'il y a des manipulations manuelles en moins à faire, comme télécharger l'archive depuis le site, créer les dossiers correspondants dans l'application, ouvrir les archives, copier les dossiers/fichiers, puis par la suite, supprimer l'archive.
j'ai trouvé un avantage, en faisant ainsi, on a plusieurs instances et j'imagine que pour faire une mise a jour du core de cakephp ca sera plus simple.
donc si j'ai bien compris, le premier composer install seulement le librairie dans Vendor
il faut alors executer pour creer le premier projet, exemple toto
donc j'ai htdocs/toto et htdocs/Vendor/cakephp/cakephp
ensuite je vais dans toto et je mets le composer.json du forum . et la je lance un deuxieme composer install
si demain la nouvelle version de cakephp sort.
j'aurais seulement a faire un composer update ?
Je trouve le systeme vraiment interessant, mais il manque un manuel pour les quiches comme moi.
Bon alors ca semble bien fonctionner.
Mais je ne comprends pas ce qu'il veut dire ici, est ce que ce n'est pas automatique ?
Be sure to enable Composer at the top of Config/core.php.
require_once dirname(__DIR__) . '/Vendor/autoload.php';
And to load the plugins (bootstrap and routes required).
// Utility should be loaded first
CakePlugin::load('Utility', array('bootstrap' => true, 'routes' => true));
CakePlugin::load('Admin', array('bootstrap' => true, 'routes' => true));
CakePlugin::load('Forum', array('bootstrap' => true, 'routes' => true));
Non, selon cet exemple, tu dois créer le dossier de ton application qui est toto, dans ce dossier, tu mets le fichier composer.json, donc à la base, tu dois avoir ça :
composer install
Ce qui va te créer le dossier Vendor, ainsi que les librairies : bin, cakephp, composer (au minimum).
Tu ne dois donc pas avoir comme tu dis : htdocs/Vendor puis, htdocs/toto, étant donné que le dossier Vendor doit se trouver dans le dossier de l'application (toto dans l'exemple).
ha c'est dommage, je me voyais deja avec
l'application
et une seule instance de cakephp dans
par rapport a ta derniere explication, je suis encore perdu.
selon la doc
http://book.cakephp.org/2.0/fr/installation/advanced-installation.html
il faut deja lancer en premier le composer.json
qui va generer
/
composer.phar
composer.json
Vendor/
bin/
autoload.php
composer/
cakephp/
et c'est seulement a ce moment que je peux creer l'application toto, titi, ou example-app.
via l'executable
Vendor/bin/cake bake project titi
qui donne
Config Controller Locale Plugin Vendor index.php webroot
Console Lib Model Test View tmp
dans lequel il faut ajouter un composer.json, j'imagine que tu parles du forum. car tout le reste est deja installé.
je me demande quel est le contenu du fichier composer.json dans /htdocs/titi/
ensuite je vais dans toto et je mets le composer.json du forum . et la je lance un deuxieme composer install
Non, tu n'est pas censé avoir besoin de copier le contenu du fichier composer.json du plugin Forum.
Si tu veux ajouter des dépendances à ton fichier composer.json de ton application, il te suffit soit d'ajouter dans le fichier composer.json dans la partie require la dépendance et sa version, ou alors en ligne de commande :
composer require mjohnson/forum 4.*
si demain la nouvelle version de cakephp sort.
j'aurais seulement a faire un composer update ?
Non également, car ton application ne sera pas compatible avec la version n°3 de CakePHP.
Si tu veux pouvoir utiliser la librairie de CakePHP entre plusieurs applications CakePHP, il te faut regarder la partie suivante : Partager les librairies de CakePHP pour plusieurs applications.
De cette manière, tu n'auras la librairie qu'une seule fois et non dans chaque application, par contre, il te faudra procéder différemment et n'installer que le squelette d'application CakePHP et non la librairie.
Mais je ne comprends pas ce qu'il veut dire ici, est ce que ce n'est pas automatique ?
Le chargement des plugins n'est pas automatique, sauf si par exemple dans ton fichier bootstrap.php, tu as mis :
CakePlugin::loadAll();
Mais de cette manière, il est possible que les fichiers bootstrap.php et routes.php des plugins, ne soient pas pris en compte.
bon voici donc ce que j'ai compris :
{
"require": {
"mjohnson/forum": "4.*"
}
}
- je relance un composer install
ca a l'air de marchouiller. mais il y a des trucs qui m'echappe
- on a htdocs/Vendor/cakephp/cakephp mais aussi htdocs/toto/Vendor/cakephp/cakephp
ca ressemble a un doublons
- aussi le fait que ca crée dans /htdocs/toto et non pas directement dans /htdocs
- j'ai modifié le core.php pour ajouter require_once dirname(__DIR__) . '/Vendor/autoload.php';
mais ca ne marche plus apres avoir ajouter cette ligne.
A quel dossier vendor il va chercher ?
Tu n'as pas vraiment compris, non.
Dans le cas où tu veux installer la librairie de cakePHP dans chacune de tes applications CakePHP :
{
"name": "toto",
"require": {
"cakephp/cakephp": "2.6.*",
"mjohnson/forum": "4.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
composer install
Ce qui devrait installer la librairie de CakePHP, ainsi que ses dépendances et normalement le Plugin Forum et ses dépendances.
cake bake project toto
Tu peux bien sûr installer le squelette de l'application avant d'installer la librairie de CakePHP et ses dépendances (normalement).
A quel dossier vendor il va chercher ?
Il va chercher dans le dossier Vendor de ton application (dans toto).
j'ai essayé dans les deux sens, a savoir le squellete avant, puis apres les librairies, j'ai l'impression que c'est pareil.
donc voila pour le forum de miles
composer require cakephp/cakephp 2.6.*
Vendor/bin/cake bake project toto
merci beaucoup pour tes explications. j'ai découvert une chose sympa.
le possibilité de tape directement en ligne de commande la commande composer require et en plus il te genere le fichier composer.json a lafin
en conclusion, et j'aimerais bien savoir si demain la version de cakephp 2.6.4 sort, comment je peux mettre a jour ?
dans un autre registre, si je modifie le fichier webroot/index.php et fait pointer sur le core cakephp qui se trouve
dans
/htdocs/Vendor/cakephp/cakephp/lib/
et que je le fait pour plusieurs application.
alors est ce faux de dire qu'il me suffirait un jour de faire un composer update(si toutefois cette commande existe) de cakephp ? et toute les applications sont ont la derniere version de cakephp ?
Fais comme tu veux, du moment que ça fonctionne et que ça t'arrange.
Je ne sais pas si tu es en local ou non.
Pour ma part, en local, je partage la librairie CakePHP entre mes différentes applications CakePHP.
Pour se faire, j'ai copié la librairie de CakePHP dans le dossier php de mon serveur Wamp et l'utilisation de la console de CakePHP étant celle de la librairie et que j'ai défini la commande cake sur celle-ci, je n'ai pas de "prefixe" à ajouter pour l'utilisation de celle-ci.
De cette manière, je n'ai plus qu'à faire qu'un cake bake project mon-projet, CakePHP détecte la localisation de la librairie CakePHP dans mon serveur et la pré-définie dans le fichier index.php de mon dossier webroot, il ne me reste plus qu'à décommenter la ligne.
Si je veux mettre à jour la librairie de CakePHP, il me suffit de remplacer celle qui est dans mon dossier php par la plus récente.
Ce qui permet d'affecter toutes mes applications CakePHP avec cette nouvelle librairie.
alors est ce faux de dire qu'il me suffirait un jour de faire un composer update(si toutefois cette commande existe) de cakephp ? et toute les applications sont ont la derniere version de cakephp ?
composer update est une commande de composer et non de CakePHP, donc, la commande fonctionnera bien et la réponse est oui, si une nouvelle version de CakePHP est disponible, avec update de composer, il apportera les modifications à la librairie de CakePHP.