2017-05-08 107 views
0

我們有經由作曲安裝到Symfony的多個供應商束(外部和內部編寫的)。因此,從一composer.json一個例子是:如何在Symfony中獲得由Composer安裝的軟件包的版本?

"repoName/ThisBundle" : "dev-release/1.1.2" 

所以在Symfony的控制器,我怎麼能要求的「ThisBundle」或「repoName/ThisBundle」的版本,返回「DEV-發佈/ 1.1 .2" ?

一個捆的服務模板,我們所有的應用程序,並在我想要顯示的模板版本的應用程序之一正在使用。

+2

你可以只解析鎖文件 – Federkun

+0

沒錯,這就是我想這樣做的,但是這是一個很大的努力來獲得一個版本號。看作Symfony是一項框架工作,通過框架工作來訪問這些細節將會很好。 – MicWit

回答

1

你只需要輸入

composer.phar show 

將顯示所有已安裝的軟件包及其版本的信息。 要了解更多詳細信息,指定包的名稱,以及:

composer.phar show bundle/bundlename 

,將顯示很多東西,包括提交MD5哈希值,源URL,許可證類型等

+0

也許你可以用如何從控制器內部操作的示例更新你的答案? – Cerad

+0

葉,這似乎是通過命令行這樣做,不是在一個控制器(經由PHP)的方式。 – MicWit

+0

$這 - >容器 - >的getParameter( 'kernel.bundles'); –

0

如果容器對象可用的(並且是這樣的情況,如果你在一個控制器是),那麼你可以通過

$this->container->getParameter('kernel.bundles'); 

得到啓用束陣列,但要記住,剛啓用的束在appkernal.php 好運

+1

這很棒,因爲您可以瞭解是否安裝了捆綁軟件,但是,即使安裝了捆綁軟件,您仍然無法獲得特定安裝捆綁軟件的版本。如果這個數組是一個多維數組,而不是僅僅擁有它所安裝版本的路徑,那麼這個數組會很棒。 – MicWit

+0

@MicWit我可以看到一種方式(對此不好),您可以更改.htaac​​ces文件,以便允許訪問composer.json文件,然後使用json_decode函數將其轉換爲數組,然後完成。 ,但它仍然是一個糟糕的做事方式,因爲web目錄應該是唯一可以在公共場合使用的地方,祝你好運 –

+0

Yeh,不會那樣做,因爲我們會被安全團隊擊中!看起來沒有辦法做到這一點,可以添加一個功能請求到Symfony。 – MicWit

相關問題