Developpement
Version 7 (Etienne Pallier, 05/02/2016 04:11 pm)
1 | 1 | Etienne Pallier | h1. Labinvent 2.0 (cakephp3) - Développement |
---|---|---|---|
2 | 1 | Etienne Pallier | |
3 | 1 | Etienne Pallier | |
4 | 1 | Etienne Pallier | |
5 | 3 | Etienne Pallier | [[Installation|=> Page wiki pour l'installation]] |
6 | 1 | Etienne Pallier | |
7 | 4 | Etienne Pallier | |
8 | 4 | Etienne Pallier | {{toc}} |
9 | 1 | Etienne Pallier | |
10 | 1 | Etienne Pallier | --- |
11 | 1 | Etienne Pallier | |
12 | 1 | Etienne Pallier | h2. LIENS UTILES |
13 | 1 | Etienne Pallier | |
14 | 1 | Etienne Pallier | Activité sur le projet (gitlab): https://gitlab.irap.omp.eu/epallier/labinvent |
15 | 1 | Etienne Pallier | |
16 | 1 | Etienne Pallier | Browse files (gitlab): https://gitlab.irap.omp.eu/epallier/labinvent/tree/master |
17 | 1 | Etienne Pallier | |
18 | 1 | Etienne Pallier | Inventirap 1.3 (prod): https://inventirap.irap.omp.eu |
19 | 1 | Etienne Pallier | |
20 | 1 | Etienne Pallier | Inventirap 1.3 (test): https://inventirap-test.irap.omp.eu/ |
21 | 1 | Etienne Pallier | |
22 | 1 | Etienne Pallier | Forum cakephp: http://discourse.cakephp.org |
23 | 1 | Etienne Pallier | |
24 | 1 | Etienne Pallier | Quickstart tutorial: http://book.cakephp.org/3.0/en/quickstart.html |
25 | 1 | Etienne Pallier | |
26 | 1 | Etienne Pallier | Bookmarker tutorial: https://github.com/cakephp/bookmarker-tutorial |
27 | 1 | Etienne Pallier | |
28 | 1 | Etienne Pallier | Cakephp CRUD: https://github.com/FriendsOfCake/crud |
29 | 1 | Etienne Pallier | |
30 | 1 | Etienne Pallier | --- |
31 | 1 | Etienne Pallier | |
32 | 1 | Etienne Pallier | h2. TODOLIST |
33 | 1 | Etienne Pallier | |
34 | 1 | Etienne Pallier | * 1) Materiels/form |
35 | 1 | Etienne Pallier | |
36 | 1 | Etienne Pallier | * 2) ACL |
37 | 1 | Etienne Pallier | |
38 | 1 | Etienne Pallier | * installer une VM avec LDAP |
39 | 1 | Etienne Pallier | |
40 | 1 | Etienne Pallier | --- |
41 | 1 | Etienne Pallier | |
42 | 7 | Etienne Pallier | h2. Installation from scratch (Sous UBuntu) |
43 | 1 | Etienne Pallier | |
44 | 1 | Etienne Pallier | h3. Création projet avec Composer |
45 | 1 | Etienne Pallier | |
46 | 1 | Etienne Pallier | * Télécharger composer.phar : |
47 | 1 | Etienne Pallier | "curl -s https://getcomposer.org/installer | php" |
48 | 1 | Etienne Pallier | |
49 | 1 | Etienne Pallier | * Avec le Composer créer un nouveau projet : |
50 | 1 | Etienne Pallier | "php composer.phar create-project --prefer-dist cakephp/app labinvent_2.0" |
51 | 1 | Etienne Pallier | |
52 | 1 | Etienne Pallier | > Voir structure projet : http://book.cakephp.org/3.0/fr/intro/cakephp-folder-structure.html |
53 | 1 | Etienne Pallier | |
54 | 1 | Etienne Pallier | * On rempli la base de données avec le fichier sql |
55 | 1 | Etienne Pallier | |
56 | 1 | Etienne Pallier | * On indique la BD utilisé à CakePHP dans le fichier config/app.php, propriété "Datasources". |
57 | 1 | Etienne Pallier | |
58 | 1 | Etienne Pallier | * On se place à la racine du projet |
59 | 1 | Etienne Pallier | |
60 | 1 | Etienne Pallier | * On génère le code Scaffold : |
61 | 1 | Etienne Pallier | "bin/cake bake all nom_table" --> ça génére les modeles, les vues, et les controlleurs. |
62 | 1 | Etienne Pallier | |
63 | 1 | Etienne Pallier | > Commande (en une fois) : |
64 | 1 | Etienne Pallier | > > bin/cake bake all categories && bin/cake bake all emprunts && bin/cake bake all groupes_metiers && bin/cake bake all groupes_thematiques && bin/cake bake all organismes && bin/cake bake all sites && bin/cake bake all sous_categories && bin/cake bake all suivis && bin/cake bake all sur_categories && bin/cake bake all type_suivis && bin/cake bake all documents && bin/cake bake all users && bin/cake bake all materiels |
65 | 1 | Etienne Pallier | |
66 | 1 | Etienne Pallier | h3. Modification de la base de données |
67 | 1 | Etienne Pallier | > Une version du sql corrigée au fur et à mesure est disponible dans le git : |
68 | 1 | Etienne Pallier | > > Dans database/, le fichier labinvent_2.0_19-04-16 correspond à la création de la base. |
69 | 1 | Etienne Pallier | > > Dans database/, le fichier labinvent_2.0_insert-irap_19-04-16 correspond aux insertions propre à l'IRAP, fichier insertion uniquement pour les dévellopeurs. |
70 | 1 | Etienne Pallier | |
71 | 1 | Etienne Pallier | * Création table "config" |
72 | 1 | Etienne Pallier | |
73 | 1 | Etienne Pallier | h3. Autres remarques lors du dévellopement |
74 | 1 | Etienne Pallier | |
75 | 1 | Etienne Pallier | |
76 | 1 | Etienne Pallier | * CakePHP permet de se configurer en PHP, on pourrait permettre au super-admin de configurer sa base, les noms, les logos, et autres graphiquement outils config dans la section outils ou dans le script d'installation, ou un autre script ? |
77 | 1 | Etienne Pallier | <pre> |
78 | 1 | Etienne Pallier | Configure::write('nomObjet', [ |
79 | 1 | Etienne Pallier | 'attribut1' => 'valeur1', |
80 | 1 | Etienne Pallier | 'attribut2' => 'valeur2' |
81 | 1 | Etienne Pallier | ]); |
82 | 1 | Etienne Pallier | </pre> |
83 | 1 | Etienne Pallier | |
84 | 1 | Etienne Pallier | La configuration du mode debug necessite l'extension "pdo_sqlite" (php5-sqlite pour ubuntu)... |
85 | 1 | Etienne Pallier | Et même avec, ça marche pas (mais il n'y a plus d'erreurs dans le log de CakePHP)... vérifier syntaxe : "Configure::write('debug', false);". |
86 | 1 | Etienne Pallier | --> Syntaxe correct mais modifie la valeur momentanément... |
87 | 1 | Etienne Pallier | --> Utilisation de variable session pour un mode debug (mode install) personalisé (mode debug de CakePHP3, ne doit pas être actif sur un serveur de production). |
88 | 1 | Etienne Pallier | |
89 | 1 | Etienne Pallier | * Avec CakePHP3 on peut gérér les ACL avec plusieurs gestionnaires d’autorisation propre à chaque profils (rôles), et une table users dans la base. |
90 | 1 | Etienne Pallier | (Lorsqu'un utilisateur se connecte, le gestionnaire de son type de compte se déclenche et les autres gestionnaires sont ignorés) |
91 | 1 | Etienne Pallier | |
92 | 1 | Etienne Pallier | > Voir (explication) : http://book.cakephp.org/3.0/fr/controllers/components/authentication.html |
93 | 1 | Etienne Pallier | > Voir (exemple) : http://book.cakephp.org/3.0/fr/tutorials-and-examples/blog-auth-example/auth.html |
94 | 1 | Etienne Pallier | > Pour faire des tests d'authentication : http://book.cakephp.org/3.0/fr/development/testing.html#testing-authentication |
95 | 1 | Etienne Pallier | |
96 | 1 | Etienne Pallier | |
97 | 1 | Etienne Pallier | * La commande Bake de CakePHP3, permet aussi de générer des tests... |
98 | 1 | Etienne Pallier | --- |
99 | 1 | Etienne Pallier | |
100 | 1 | Etienne Pallier | * Suivre les conventions de CakePHP est le top pour ne pas avoir à refaire de la config (bidouiller), il faudrait vérifier réguliérement que c'est le cas (outil "cakephp-codesniffer")... |
101 | 1 | Etienne Pallier | > http://book.cakephp.org/3.0/fr/contributing/cakephp-coding-conventions.html |
102 | 1 | Etienne Pallier | |
103 | 1 | Etienne Pallier | * La solution pour insérer un utilisateur directement dans la base et pouvoir se connecter avec dans l'application est de l'insérer avec un mot de passe haché de la méme façon. |
104 | 1 | Etienne Pallier | Le mot de passe "login" = "$2y$10$LZzpws3oDidBcqO/Fy1RTedLLk3ENTmplny5J7bZ6R1PqFoGOw3Ma". |
105 | 1 | Etienne Pallier | |
106 | 1 | Etienne Pallier | * Vérifier que la migration vers la prochaine version de cakephp3 (3.3 ?) sera facile... (décrire la procédure à suivre) |
107 | 1 | Etienne Pallier | --> Une migration vers une version mineur 3.2 => 3.3, se réalise avec la mise à jour de CakePHP à l'aide de Composer |
108 | 1 | Etienne Pallier | --> Puis il faut regarder les changements dans la page migration correspondant à la version voulu et adapter les changements au code. |
109 | 1 | Etienne Pallier | ==>http://book.cakephp.org/3.0/fr/appendices/3-2-migration-guide.html |
110 | 1 | Etienne Pallier | |
111 | 1 | Etienne Pallier | * Outil (plugin) "DebugKit" de CakePHP3 : (a venir) |
112 | 1 | Etienne Pallier | |
113 | 1 | Etienne Pallier | h2. %{margin-left:0px; font-weight:bold; font-size:25px; display:block; color:red;}(DEV ONLY) NOTES FOR ECLIPSE USERS% |
114 | 1 | Etienne Pallier | |
115 | 1 | Etienne Pallier | 0) Install Eclipse (if necessary) |
116 | 1 | Etienne Pallier | |
117 | 1 | Etienne Pallier | Get the Eclipse version for Php |
118 | 1 | Etienne Pallier | |
119 | 1 | Etienne Pallier | |
120 | 1 | Etienne Pallier | 1) Deactivate CA certificate verification |
121 | 1 | Etienne Pallier | |
122 | 1 | Etienne Pallier | Window -> Preferences -> Team -> git -> configuration -> Add entry |
123 | 1 | Etienne Pallier | |
124 | 1 | Etienne Pallier | Key = http.sslVerify |
125 | 1 | Etienne Pallier | Value = false |
126 | 1 | Etienne Pallier | |
127 | 1 | Etienne Pallier | 2) Fetch the project |
128 | 1 | Etienne Pallier | |
129 | 1 | Etienne Pallier | File/Import project from git |
130 | 1 | Etienne Pallier | |
131 | 1 | Etienne Pallier | Select repository source: Clone URI: https://gitlab.irap.omp.eu/epallier/labinvent.git |
132 | 1 | Etienne Pallier | |
133 | 1 | Etienne Pallier | Directory: |
134 | 1 | Etienne Pallier | - par défaut, il propose : /Users/epallier/git/labinvent |
135 | 1 | Etienne Pallier | - mais on peut le mettre n'importe où ailleurs, |
136 | 1 | Etienne Pallier | par exemple, on pourrait le mettre directement dans le repertoire web de Apache: |
137 | 1 | Etienne Pallier | /Applications/XAMPP/xamppfiles/htdocs |
138 | 1 | Etienne Pallier | (si on veut que le projet s'execute directement dans le dossier web apache htdocs, mais ca n'est pas obligatoire...) |
139 | 1 | Etienne Pallier | |
140 | 1 | Etienne Pallier | initial branch: master |
141 | 1 | Etienne Pallier | remote name: origin |
142 | 1 | Etienne Pallier | |
143 | 1 | Etienne Pallier | Import as general project |
144 | 1 | Etienne Pallier | |
145 | 1 | Etienne Pallier | Project name: LABINVENT |
146 | 1 | Etienne Pallier | |
147 | 1 | Etienne Pallier | |
148 | 1 | Etienne Pallier | |
149 | 1 | Etienne Pallier | |
150 | 1 | Etienne Pallier | 3) Configure the project |
151 | 1 | Etienne Pallier | |
152 | 1 | Etienne Pallier | a) S'assurer que le projet est bien reconnu comme un projet PHP (il doit y avoir un petit "P" sur le dossier racine du projet) |
153 | 1 | Etienne Pallier | Si ça n'est pas le cas, vérifier que le fichier .project (à la racine) contient bien |
154 | 1 | Etienne Pallier | <natures> |
155 | 1 | Etienne Pallier | <nature>org.eclipse.php.core.PHPNature</nature> |
156 | 1 | Etienne Pallier | </natures> |
157 | 1 | Etienne Pallier | NB : Le fichier .project est normalement versionné et donc le projet labinvent devrait être reconnu automatiquement comme projet PHP |
158 | 1 | Etienne Pallier | |
159 | 1 | Etienne Pallier | |
160 | 1 | Etienne Pallier | b) S'assurer que les fichiers de vue de cakephp ("*.ctp") sont bien reconnus comme des fichiers PHP. |
161 | 1 | Etienne Pallier | Pour tester cela, ouvrir le fichier de vue cakephp/app/View/Categories/get_all.ctp |
162 | 1 | Etienne Pallier | Si ce fichier s'ouvre comme un simple fichier texte, c'est qu'il n'est pas reconnu par Eclipse comme un fichier Php. |
163 | 1 | Etienne Pallier | Il faut donc associer l'editeur Php a l'extension de fichier "*.ctp" : |
164 | 1 | Etienne Pallier | - Preferences/General/Content types |
165 | 1 | Etienne Pallier | - Dans la liste "Content types", ouvrir la section "Text", selectionner PHP |
166 | 1 | Etienne Pallier | - Ajouter l'extension "*.ctp" |
167 | 1 | Etienne Pallier | |
168 | 1 | Etienne Pallier | c) Vérifier la version de php utilisée (il serait préférable d'utiliser la meme version que celle officiellement utilisée par le logiciel, c'est à dire php 5.6, mais attention, le serveur IRAP utilise toujours une version 5.3 pour inventirap) : |
169 | 1 | Etienne Pallier | - Clic-droit sur le projet, Propriétés |
170 | 1 | Etienne Pallier | - PHP |
171 | 1 | Etienne Pallier | - Interpreter |
172 | 1 | Etienne Pallier | - Enable project specific settings, PHP Version : "PHP 5.6" |
173 | 1 | Etienne Pallier | |
174 | 1 | Etienne Pallier | d) S'assurer que le texte est bien encodé en UTF-8 par défaut : |
175 | 1 | Etienne Pallier | clic-droit sur le dossier racine du projet (dans PHP Explorer), Properties, Resource : dans la zone "Text file encoding" cocher "Other" et sélectionner UTF-8 |
176 | 1 | Etienne Pallier | ( |
177 | 1 | Etienne Pallier | Il faudrait commiter ça mais je ne sais pas trop si c'est risqué ou pas. |
178 | 1 | Etienne Pallier | Les fichiers concernés sont : |
179 | 1 | Etienne Pallier | - .project (déjà versionné) : car il commence par la ligne "<?xml version="1.0" encoding="UTF-8"?>" |
180 | 1 | Etienne Pallier | - mais c'est surtout celui-ci qui compte (actuellement ignoré de git) : .settings/org.eclipse.core.resources.prefs : car sa 2eme ligne est "encoding/<project>=UTF-8" |
181 | 1 | Etienne Pallier | ) |
182 | 1 | Etienne Pallier | |
183 | 1 | Etienne Pallier | Les éléments suivants sont normalement DEJA ignorés par git, à vérifier : |
184 | 1 | Etienne Pallier | - .settings/ |
185 | 1 | Etienne Pallier | - cakephp/app/tmp/ : tout sauf |
186 | 1 | Etienne Pallier | - documents/ |
187 | 1 | Etienne Pallier | - cakephp/app/Config/ : |
188 | 1 | Etienne Pallier | - database.php |
189 | 1 | Etienne Pallier | - labinvent.php |
190 | 1 | Etienne Pallier | |
191 | 1 | Etienne Pallier | |
192 | 1 | Etienne Pallier | |
193 | 1 | Etienne Pallier | |
194 | 1 | Etienne Pallier | |
195 | 1 | Etienne Pallier | <pre> |
196 | 1 | Etienne Pallier | ********************************************************* |
197 | 1 | Etienne Pallier | REMARQUES INTERRESSANTES (MAIS VOUS POUVEZ LES IGNORER) |
198 | 1 | Etienne Pallier | |
199 | 1 | Etienne Pallier | // DEBUT DES REMARQUES |
200 | 1 | Etienne Pallier | |
201 | 1 | Etienne Pallier | A la racine du projet, j'ai plusieurs éléments cachés de configuration Eclipse : |
202 | 1 | Etienne Pallier | |
203 | 1 | Etienne Pallier | 1) fichier .buildpath |
204 | 1 | Etienne Pallier | Il est versionné puisque "svn status .buildpath" (depuis la console) ne donne rien |
205 | 1 | Etienne Pallier | Il contient : |
206 | 1 | Etienne Pallier | |
207 | 1 | Etienne Pallier | <?xml version="1.0" encoding="UTF-8"?> |
208 | 1 | Etienne Pallier | <buildpath> |
209 | 1 | Etienne Pallier | <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/> |
210 | 1 | Etienne Pallier | <buildpathentry kind="lib" path="docs/mockup/mockup_html.zip"/> |
211 | 1 | Etienne Pallier | <buildpathentry kind="src" path="cakephp"/> |
212 | 1 | Etienne Pallier | </buildpath> |
213 | 1 | Etienne Pallier | |
214 | 1 | Etienne Pallier | 2) fichier .project |
215 | 1 | Etienne Pallier | Il est déjà versionné |
216 | 1 | Etienne Pallier | Il contient : |
217 | 1 | Etienne Pallier | <?xml version="1.0" encoding="UTF-8"?> |
218 | 1 | Etienne Pallier | <projectDescription> |
219 | 1 | Etienne Pallier | <name>invirap</name> |
220 | 1 | Etienne Pallier | <comment></comment> |
221 | 1 | Etienne Pallier | <projects> |
222 | 1 | Etienne Pallier | </projects> |
223 | 1 | Etienne Pallier | <buildSpec> |
224 | 1 | Etienne Pallier | <buildCommand> |
225 | 1 | Etienne Pallier | <name>org.eclipse.wst.common.project.facet.core.builder</name> |
226 | 1 | Etienne Pallier | <arguments> |
227 | 1 | Etienne Pallier | </arguments> |
228 | 1 | Etienne Pallier | </buildCommand> |
229 | 1 | Etienne Pallier | <buildCommand> |
230 | 1 | Etienne Pallier | <name>org.eclipse.wst.validation.validationbuilder</name> |
231 | 1 | Etienne Pallier | <arguments> |
232 | 1 | Etienne Pallier | </arguments> |
233 | 1 | Etienne Pallier | </buildCommand> |
234 | 1 | Etienne Pallier | <buildCommand> |
235 | 1 | Etienne Pallier | <name>org.eclipse.dltk.core.scriptbuilder</name> |
236 | 1 | Etienne Pallier | <arguments> |
237 | 1 | Etienne Pallier | </arguments> |
238 | 1 | Etienne Pallier | </buildCommand> |
239 | 1 | Etienne Pallier | </buildSpec> |
240 | 1 | Etienne Pallier | <natures> |
241 | 1 | Etienne Pallier | <nature>org.eclipse.php.core.PHPNature</nature> |
242 | 1 | Etienne Pallier | <nature>org.eclipse.wst.common.project.facet.core.nature</nature> |
243 | 1 | Etienne Pallier | </natures> |
244 | 1 | Etienne Pallier | </projectDescription> |
245 | 1 | Etienne Pallier | |
246 | 1 | Etienne Pallier | 3) dossier .settings/ (exclus de svn) |
247 | 1 | Etienne Pallier | Il contient 3 fichiers : |
248 | 1 | Etienne Pallier | |
249 | 1 | Etienne Pallier | - org.eclipse.core.resources.prefs : bizarrement, il ne contient que quelques références seulement : |
250 | 1 | Etienne Pallier | eclipse.preferences.version=1 |
251 | 1 | Etienne Pallier | encoding//cakephp/app/Controller/MaterielsController.php=UTF-8 |
252 | 1 | Etienne Pallier | encoding//cakephp/app/View/Elements/menu_view.ctp=UTF-8 |
253 | 1 | Etienne Pallier | encoding//cakephp/app/View/Layouts/default.ctp=UTF-8 |
254 | 1 | Etienne Pallier | encoding//cakephp/app/View/Materiels/index.ctp=UTF-8 |
255 | 1 | Etienne Pallier | encoding//cakephp/app/View/Materiels/scaffold.view.ctp=UTF-8 |
256 | 1 | Etienne Pallier | encoding//database/Upd_TableConstraints.sql=UTF-8 |
257 | 1 | Etienne Pallier | encoding//database/update/README.txt=UTF-8 |
258 | 1 | Etienne Pallier | encoding//docs/HOWTO.txt=UTF-8 |
259 | 1 | Etienne Pallier | encoding//install/HOWTO.txt=UTF-8 |
260 | 1 | Etienne Pallier | encoding/<project>=UTF-8 |
261 | 1 | Etienne Pallier | |
262 | 1 | Etienne Pallier | - org.eclipse.php.core.prefs |
263 | 1 | Etienne Pallier | eclipse.preferences.version=1 |
264 | 1 | Etienne Pallier | include_path=0;/invirap\u00051;/invirap/docs/mockup/mockup_html.zip |
265 | 1 | Etienne Pallier | |
266 | 1 | Etienne Pallier | - org.eclipse.wst.common.project.facet.core.xml : sans doute inutile ? (lié à "Faceted Project Validation Builder" dans Properties/Builders) |
267 | 1 | Etienne Pallier | <?xml version="1.0" encoding="UTF-8"?> |
268 | 1 | Etienne Pallier | <faceted-project> |
269 | 1 | Etienne Pallier | <fixed facet="php.core.component"/> |
270 | 1 | Etienne Pallier | <fixed facet="php.component"/> |
271 | 1 | Etienne Pallier | <installed facet="php.core.component" version="1"/> |
272 | 1 | Etienne Pallier | <installed facet="php.component" version="5.4"/> |
273 | 1 | Etienne Pallier | </faceted-project> |
274 | 1 | Etienne Pallier | |
275 | 1 | Etienne Pallier | // FIN DES REMARQUES |
276 | 1 | Etienne Pallier | ********************************************************* |
277 | 1 | Etienne Pallier | </pre> |
278 | 1 | Etienne Pallier | |
279 | 1 | Etienne Pallier | 4) (TODO:) Set Code style |
280 | 1 | Etienne Pallier | |
281 | 1 | Etienne Pallier | Window/Preferences : PHP / Editor |
282 | 1 | Etienne Pallier | ... |
283 | 1 | Etienne Pallier | |
284 | 1 | Etienne Pallier | 5) (TODO: virtualenv) Now, once the PHP5 virtual environment is installed (see above), |
285 | 1 | Etienne Pallier | set it in Eclipse as the project interpreter: |
286 | 1 | Etienne Pallier | |
287 | 1 | Etienne Pallier | (cf http://virtphp.org) |
288 | 1 | Etienne Pallier | |
289 | 1 | Etienne Pallier | ... |
290 | 1 | Etienne Pallier | |
291 | 1 | Etienne Pallier | 6) (TODO:) Test |
292 | 1 | Etienne Pallier | |
293 | 1 | Etienne Pallier | |
294 | 1 | Etienne Pallier | 7) (TODO:) Run |
295 | 1 | Etienne Pallier | |
296 | 1 | Etienne Pallier | check http://localhost:8080/ |