6

Desidero utilizzare symfony2.1 per un nuovo progetto. Cerco di installare symfony2 con il compositore. Ma c'erano più errori/problemi e quindi ho anche domande per ogni problema nello stile di font in grassetto . A volte non so se lo faccio nel modo giusto.confusione della versione del pacchetto symfony2.1, per symfony e il pacchetto del menu admin/knp di symfony

Desidero utilizzare una versione stabile, quindi ho scelto la versione 2.1.0 e non l'unità di sviluppo/master.

php composer.phar create-project symfony/framework-standard-edition symfony v2.1.0 

il risultato è stato questo:

Installing symfony/framework-standard-edition (v2.1.0) 
    - Installing symfony/framework-standard-edition (v2.1.0) 
    Downloading: 100% 

    Created project in symfony 
    Loading composer repositories with package information 
    Installing dependencies from lock file 
    Your requirements could not be resolved to an installable set of packages. 

     Problem 1 
     - Installation request for symfony/symfony == 2.1.9999999.9999999-dev -> satisfiable by            symfony/symfony 2.1.x-dev. 
     - Can only install one of: symfony/symfony dev-master, symfony/symfony 2.1.x-dev. 
     - Installation request for symfony/symfony == 9999999-dev -> satisfiable by symfony/sym            fony dev-master. 

così faccio un php composer.phar update e le dipendenze è stato installato senza errori.

Ma ho notato che la maggior parte dei pacchetti non ha una versione stabile. Per esempio la dottrina/comune (2.3.x-dev), ecco l'elenco completo

Loading composer repositories with package information 
Updating dependencies 
    - Installing doctrine/common (2.3.x-dev 605b1b8) 
    Cloning 605b1b8b5a7bc8daf9111fb35483e5708e30de35 

    - Installing doctrine/dbal (2.3.x-dev 239630b) 
    Cloning 239630b61f03f39d198441eced1bfffb7b0e61d1 

    - Installing twig/twig (dev-master 68b8c46) 
    Cloning 68b8c4619c5bbe82bd345fe56070dec8c356610a 

    - Installing symfony/symfony (2.1.x-dev e7059b4) 
    Cloning e7059b44c78ca8e1e892adb4d93b5a482f4eb9b3 

    - Installing swiftmailer/swiftmailer (dev-master e12e4ef) 
    Cloning e12e4ef3a9d6dd60fb734a01984a6e6627aea764 

    - Installing doctrine/orm (2.3.x-dev 4d9f24b) 
    Cloning 4d9f24b2eef3af3a3e76c773994c19bbb0706f88 

    - Installing doctrine/doctrine-bundle (dev-master v1.0.0) 
    Cloning v1.0.0 

    - Installing twig/extensions (dev-master f904575) 
    Cloning f904575642b1213db69b4a98f08397e722ba1cae 

    - Installing kriswallsmith/assetic (dev-master dfbb776) 
    Cloning dfbb776288baf9319d1693195af2cb6e00729901 

    - Installing symfony/assetic-bundle (dev-master 4e7e8a0) 
    Cloning 4e7e8a039fa19434f04558473adbb201118af942 

    - Installing symfony/swiftmailer-bundle (dev-master d2eae93) 
    Cloning d2eae9385c029cbac031a90e6d2abc74b889a562 

    - Installing monolog/monolog (dev-master a929570) 
    Cloning a929570bb7688b39fefe4106f0ecf0ac35f37647 

    - Installing symfony/monolog-bundle (dev-master v2.1.0-RC2) 
    Cloning v2.1.0-RC2 

    - Installing sensio/distribution-bundle (dev-master 9892129) 
    Cloning 98921298951598e8707258cba2b6180b96faa91c 

    - Installing sensio/framework-extra-bundle (dev-master v2.1.0) 
    Cloning v2.1.0 

    - Installing sensio/generator-bundle (dev-master v2.1.0-RC2) 
    Cloning v2.1.0-RC2 

    - Installing jms/metadata (1.1.1) 
    Downloading: 100% 

    - Installing jms/cg (1.0.0) 
    Downloading: 100% 

    - Installing jms/aop-bundle (1.0.0) 
    Downloading: 100% 

    - Installing jms/di-extra-bundle (1.1.x-dev af21952) 
    Cloning af219527024c584d7311aa855d7522429c5bdb67 

    - Installing jms/security-extra-bundle (1.2.x-dev 9ab6ace) 
    Cloning 9ab6aceda50fc7a2b07d741ba4b3f0695508afcb 

1a) è questo diritto? O c'è un'altra soluzione? Voglio dire usare bundle che sono stabili e non in modalità dev

Il giorno dopo faccio di nuovo un aggiornamento del compositore e ho notato che alcune librerie sono state aggiornate: tutte le librerie per il ramo dev-master che hanno nuove modifiche nell'ultimo giorno .
1b) Quindi dovrei fare un aggiornamento del compositore a intervalli regolari mentre sviluppi la mia app, per unire nuove correzioni di errori, ecc?

$ php composer.phar update 
Loading composer repositories with package information 
Updating dependencies 
    - Updating swiftmailer/swiftmailer dev-master (e12e4e => c97353) 
    Checking out c97353b1ebffe25a224146f69d17efe24c093def 

    - Updating monolog/monolog dev-master (a92957 => e5bf7b) 
    Checking out e5bf7ba5d1df622b68d004b3c0277bc94286e1b7 

    - Updating friendsofsymfony/user-bundle dev-master (24edb2 => 878b7c) 
    Checking out 878b7c8320159fb09e8e94d446c498b00142b206 

    - Updating sonata-project/notification-bundle dev-master (5e7b50 => 9cef7d) 
    Checking out 9cef7d224f224b4e4327f200f9bd57b798d4ab0a 

    - Updating knplabs/gaufrette dev-master (861110 => 5ac439) 
    Checking out 5ac439cd46eb461043e6bb73dae717528f674a57 

    - Updating sonata-project/media-bundle dev-master (d04a61 => 233511) 
    Checking out 2335114dab6ea9680d174df157f5a7b4551a54dc 

Perché io non scoperto un'altra soluzione Continuo e installare FOS UserBundle aggiungendo questa riga "friendsofsymfony/user-bundle": "*" al composer.json. Faccio l'intera installazione e funziona perfettamente.

Quindi inizio ad installare Sonata AdminBundle aggiungendo "sonata-project/admin-bundle": "dev-master" a composer.json. Ho scelto la versione dev-master perché su http://packagist.org/packages/sonata-project/admin-bundle ho scoperto che la versione 2.0.x-dev non è per symfony2.1.
Inoltre l'AdminBundle ha un depdency per knplabs/KNP-menu-bundle:. 1.1 *
Su http://packagist.org/packages/knplabs/knp-menu-bundle vedo per la versione v1.1.0 che c'è un altro dipendenza per knplabs/KNP-menù:. 1.1 *
Poi su http://packagist.org/packages/knplabs/knp-menu ho trovato 4 versioni che inizia con 1.1:

  • 1.1.x-dev
  • v1.1.2
  • v1.1.1
  • v1.1.0

2a) C'è una differenza se c'è uno v leader prima del numero di versione?

2b) Quale versione verrà utilizzata da questi quattro, quando la dipendenza è 1,1 *?

Quando inizio a caricare le dipendenze fascio di admin vedo il risultato:

$ php composer.phar update 
Loading composer repositories with package information 
Updating dependencies 
    - Installing knplabs/knp-menu (1.1.x-dev v1.1.2) 
    Cloning v1.1.2 

    - Installing knplabs/knp-menu-bundle (v1.1.0) 
    Downloading: 100% 

    - Installing sonata-project/admin-bundle (dev-master 20d5e4a) 
    Cloning 20d5e4a659bddb5fc0bcfc4755643dbc4e3f7ec1 

installo alcuni più bundle sonata (dottrina-orm-admin-fascio, user-fascio, pagina-fascio, dei media -bundle) e c'era un errore

- Installing imagine/imagine (v0.3.0) 
    Downloading: 100% 



    [ErrorException] 
    rename(C:\wamp\www\symfony\vendor/imagine/Imagine/avalanche123-Imagine-a23b4f5,afcc946468d0cf073686fe7e1ae19eb2): access denied 
    (code: 5) 

3), ma quando ripeto il passo non c'era più l'errore. È normale?

$ php composer.phar update 
Loading composer repositories with package information 
Updating dependencies 
    - Installing imagine/imagine (v0.3.0) 
    Downloading: 100% 

    - Installing knplabs/gaufrette (dev-master 8611109) 
    Cloning 8611109aeb0bd43fd88485c20fec7fc85b021b84 

    - Installing sonata-project/media-bundle (dev-master d04a617) 
    Cloning d04a617d81383a6e1ba65ee99c2ea4379e7daf4e 

poi ho continuato con la configurazione del fascio Sonata admin. Dopo aggiungo un creare un'entità Post e un PostAdmin e configurare un servizio per esso (btw: la configurazione del servizio è un po 'povero), ho notato che ho dimenticato di installare il menu KNP (l'errore è stato: non-existent service "knp_menu.factory)

Vado su https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md e vedo i dettagli dell'istruzione per installarlo. Butt erano obsoleti. Dal momento che smyfony2.1. il $loader nel autoload.php ha alcuna funzione registerNamespaces più, perché questa non è la classe UniversalClassLoader, la sua classloader compositore. Quindi devo creare una propria istanza UniversalClassLoader. E i percorsi sono completamente diversi, ora c'è una directory madre knplabs e anche la sottocartella cambiata.

use Symfony\Component\ClassLoader\UniversalClassLoader; 
use Doctrine\Common\Annotations\AnnotationRegistry; 

$loader = require __DIR__.'/../vendor/autoload.php'; 

// intl 
if (!function_exists('intl_get_error_code')) { 
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; 

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs'); 
} 

$universalLoader = new UniversalClassLoader(); 
$universalLoader->registerNamespaces(array(
     'Knp\Menu' => __DIR__.'../vendor/knplabs/knp-menu/src', 
     'Knp\Bundle' => __DIR__.'/../vendor/knplabs/knp-menu-bundle' 
)); 
$universalLoader->register(); 


AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

return $loader; 

4) Perché il KnpMenu installazione di costruzione obsoleta e perché c'è solo un branch master su GitHub e niente per le versioni che esistono sul http://packagist.org?

Sono nuovo di Symfony2 e compositore ed è a volte davvero difficile capire queste cose insieme.

+0

stesso successo a me. Voglio incorporare l'elasticabundle ma il documento è obsoleto. Era inteso per symfony2.0 anche se ho visto che hanno frequenti commit ma nessuno ha aggiornato la guida all'installazione. se l'installazione è superata, come può usarla? –

risposta

7

1a) è questo diritto? O c'è un'altra soluzione? Intendo utilizzare pacchetti che sono stabili e non in modalità dev

Symfony21 sceglierà la versione migliore per te. Puoi vedere queste versioni nel file composer.json del pacchetto symfony/framework-standard-edition (symfony/symfony-standard su github).

Come si può vedere che utilizza le versioni 2.1.* e non i dev-master versioni, ma perché l'ultima versione del pacchetto inizia con 2.1 esso caricherà il dev-master. In seguito, con symfony2.2 non dovrebbe utilizzare dev-master, ma la versione più recente del pacchetto è 2.1.

Se si desidera una versione statica, è sufficiente sostituire lo * con la versione secondaria desiderata, ma non è consigliabile poiché non si ottengono correzioni di errori.

1b) Quindi devo fare un aggiornamento del compositore intervalli regolari durante lo sviluppo la mia app, per unire le nuove correzioni, ecc?

Sì, è opportuno aggiornare le dipendenze di volta in volta. Ad esempio se pensi di aver individuato un bug o se lo hai inserito in production.

2a) C'è una differenza se è presente una prima v prima del numero di versione?

Come possiamo leggere in the packagist documentation (sotto versioni dei pacchetti Managing) non v'è alcuna differenza. Puoi usarli entrambi e se usi 2.1.4 cercherà una versione 2.1.4 o v2.1.4.

2b) Quale versione verrà utilizzata da questi quattro, quando la dipendenza è 1.1. *?

L'ultima 1.1 sovversione. Ad esempio se il pacchetto foobar ha queste versioni: 1.1.1, 1.1.2 .. 1.1.6. E si richiede 1.1.* l'ultimo (1.1.6) verrà installato.

3) ma quando ripeto il passaggio l'errore era sparito. È normale?

Sembra che la CLI non possa accedere al file, forse lo si è aperto in un programma. Quando lo hai provato la seconda volta ha avuto accesso.

4) Perché il KnpMenu installazione di costruzione obsoleta e perché c'è solo un branch master su GitHub e niente per le versioni che esistono sul http://packagist.org?

Prima domanda: non so perché la documentazione è obsoleta. Dovresti andare nel file vendor/composer/autoload_namespaces.php e mettere lì gli spazi dei nomi, quindi dovrebbe funzionare. In alternativa, l'opzione migliore è aggiungere questi spazi dei nomi all'impostazione require nel file composer.json. Vedere lo composer autoload docs per ulteriori informazioni.

Seconda domanda: utilizza lo tags anche su github.

Problemi correlati