[Yii 2] Qual'è la struttura corretta delle cartelle per il template avanzato?

Attualmente io ho le cartelle messe così




htdocs

-- advanced

   -- backend

   -- frontend

   -- common

   -- vendor

   ...

-- tests [codeception]

-- vendor



Ho notato che sia il composer.json che la cartella vendor sono sia sotto la root del server che sotto advanced.

Mi è venuto il dubbio che sto sbagliando qualcosa.

Non è che in realtà andrebbero messe così ?




htdocs

-- advanced

-- backend

-- frontend

-- common

-- vendor

-- tests [codeception]



Così si avrebbe un unico .json e una unica cartella vendor …

voi come fate?

Mi sa che hai sbagliato qualcosa, vendor dovrebbe essere una e stare nella root del progetto.

Come hai installato il template advanced?




cd htdocs

rm ./* -rf

php -r "readfile('https://getcomposer.org/installer');" | php

php composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta3"

php composer.phar require --prefer-dist "yiisoft/yii2 *"

php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced



sino a qui non c’è la cartella vendor sotto advanced

poi però




cd advanced

./init



e compare il tutto.

Dove sbaglio !??!

Ho capito solo ora che posso/devo cancellare tutti i composer.* e tutta la cartella vendor, perchè poi la webroot del mio sito diventerà htdocs/advanced

così funziona (e così funziona anche quella maledetta/presiozissima estensione "yii2-admin")

Mica ho capito, ma mi adeguo :D

Mi hai chiesto come ho fatto a far saltare fuori quella struttura, e ti ho risposto :)

Praticamente parto da una htdocs vuota

Scarico composer e "installo" yii 2 da dentro htdocs, per cui mi ritrovo con htdocs che contiene




composer.json

composer.lock

composer.phar

vendor



A quel punto eseguo l’azione ‘create-project’ con destinazione la cartella ‘advanced’ e mi ritrovo con la struttura così




composer.json

composer.lock

composer.phar

vendor

avanced

-- backend

-- common

-- frontend

-- vendor

 ....



Ora sto rimediando: ho cancellato tutto dalla root tranne advanced




advanced

-- backend

-- common

-- frontend

-- vendor

 ....



Quindi ho spostato tutto il contenuto di advanced nella root, ho cancellato la cartella advanced, che era a quel punto vuota, e ho riscaricato composer.phar

Ora ho la struttura 'corretta




backend

common

frontend

vendor

composer.json

composer.lock

composer.phar

...



i due virtual host punteranno ora in questo modo




app.dominio.it -> htdocs/frontend/web

admin.dominio.it -> htdocs/backend/web



Questo non mi torna, cosa intendi per installo Yii?

E’ il comando “create-project” che scarica il pacchetto Yii col template basic o advanced e “installa” yii.

O fai un passaggio di troppo o quei files sono quelli globali di composer, ma è strano perché dovrebbero stare dentro ~/.composer…

Nella mia macchina di sviluppo, ad esempio, io l’ho installato in questo modo:




curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer



poi per ogni progetto nuovo creo la struttura base con




composer create-project --prefer-dist yiisoft/yii2-app-advanced /var/www/miapp



dopo configuro i virtualhost per i DocumentRoot e modifico /var/www/miapp/composer.json con le dipendenze aggiuntive per il mioprogetto.

In questo modo in var/www/miapp c’è la struttura corretta… spero di essere stato chiaro anche se non credo visto che è tardi e sono lesso :D

Ah forse ho capito, rileggendo il tuo post… tu fai questa cosa qua:


php composer.phar require --prefer-dist "yiisoft/yii2 *"

che non serve se non vuoi fare un’installazione da zero, cioè senza template!

E’ questo comando che ti crea solo le dipendenze richieste da Yii2, in questo caso dovresti farti a mano tutta la struttura o modificare il composer.json e fare un update etc… etc… ma se usi il template non ti serve!

Esatto, Nicola. Sei più bravo te a capirmi che io a spiegarmi

Tu lavori su Linux. Io su Windows sotto xampp, per cui io parto da zero, senza conposer installato a livello di macchina, è per questo che devo fare il require di yii2 stesso.

E appunto io uso il template perché mi piace far fare del lavoro in automatico all’inizio del mio studio di un framework

Più avanti farò tutto a mano, ora no

Quel comando non ti serve nemmeno su windows, una volta che hai composer.phar hai tutto quello che ti serve per dare il comando "create-project"!

Ah si? Questo non lo avevo provato. Al prossimo ‘pialla tutto e riparti’ ci provo