Je suis nouveau à Laravel et j'essaie d'installer laravelcollective. Je ne fais que suivre la documentation ici et je l’utilise à partir du répertoire de mon projet:
composer require "laravelcollective/html":"^5.4.0"
Malheureusement, immédiatement après avoir appuyé sur, j'obtiens l'erreur suivante:
[UnexpectedValueException] Impossible d'analyser la contrainte de version: 5.4.0: Chaîne de version non valide ": 5.4.0"
Je ne sais tout simplement pas comment résoudre ce problème. Je n'ai pas trouvé grand chose sur Google, ce qui, combiné à mon manque d'expérience avec Laravel, me laisse coincé.
Quelqu'un peut aider?
Vous pouvez l'ajouter manuellement dans composer.json
puis utiliser composer update
.
Ajoutez simplement "laravelcollective/html": "5.4.*",
sous la ligne avec "laravel/framework":"5.4.*",
Comme ça :
"require": {
"php": ">=7.0.0",
"fideloper/proxy": "~3.3",
"laravel/framework": "5.4.*",
"laravelcollective/html": "5.4.*", <-- Add this row
"laravel/tinker": "~1.0"
},
Dans mon cas, j’utilisais Laravel 5.7 et continuais à avoir une erreur en essayant d’installer le collectif Laravel.
Vous pouvez utiliser cette commande sans spécifier de version:
composer require 'laravelcollective/html'
Cela a fonctionné pour moi. :)
Vous ne devriez jamais exécuter composer update
sans aucun argument si vous ne voulez pas mettre à jour tous vos dépendances.
Dans votre cas, le problème est probablement que le caractère ^
est déjà interprété par votre shell avant que l'argument ne soit passé à Composer. Cela pourrait éventuellement être résolu en utilisant des guillemets simples au lieu de guillemets doubles:
composer require 'laravelcollective/html:^5.4.0'
Lorsque vous avez utilisé la contrainte 5.4.*
comme suggéré dans l'un des commentaires ci-dessus, vous avez ajouté un espace après les deux-points, ce qui conduit Composer à interpréter la contrainte de version comme un nom de package. La bonne commande aurait été la suivante:
composer require "laravelcollective/html":"5.4.*"
composer require "laravelcollective/html ^5.4.0"
Travaillé pour moi!