2015-04-16 36 views
4

我建立一個網站,有一個「子域」之稱的市場。所以url將是marketplace.sample.com。我正在使用Yii2高級應用程序,並將以下代碼添加到位於前端/ web中的index.php。我在哪裏放Yii2全局變量類似YII_DEBUG和YII_ENV

defined('MARKETPLACE') or define('MARKETPLACE', preg_match('/^marketplace/', $_SERVER['HTTP_HOST']) === 1 ? true : false); 

這適用於我的環境,但是,我只是意識到index.php文件是在Yii2中的.gitignore文件,因爲該文件是由init腳本創建,因此它的變化將被覆蓋運行init。

無論如何,所以問題是:我在哪裏可以把這個代碼,以便它可以提交,並與開發團隊的其他成員共享,並使其生產的代碼時被推?

我試圖把這個代碼放在common/config/params.php中,但是當我嘗試訪問變量來確定使用哪個路由時,我不能這樣做,因爲Yii應用程序在前端/ config/main.php文件運行,我得到一個錯誤,我試圖訪問一個非對象的屬性。

/frontend/config/main.php

'defaultRoute' => MARKETPLACE ? 'marketplace' : 'site', 

/frontend/config/main.php(帶PARAM代替)

'defaultRoute' => Yii::$app->params['marketplace'] ? 'marketplace' : 'site' 

這第二個給出了我想要的錯誤訪問非對象的屬性。

+0

爲什麼不加入另一個文件(env.php爲例),並要求其在指數。 PHP,因此保持它.gitignore。 – apoq

+0

我不能在index.php中添加任何東西,並且讓它與其他開發者共享,因爲它被忽略。所以我不能添加一個需求,因爲我無法添加上面的定義。 – paviktherin

回答

5

在目錄:

common/config 

可以使用的bootstrap.php文件插入你需要的代碼。 該文件在啓動階段執行並且不在.gitignore中指示。

這樣您可以分配常數MARKETPLACE肯定的傳播代碼當您使用GIT

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

這是(我認爲)一個正確的答案,而不是一個作者的批評或要求澄清。 bootstrap.php是執行代碼的第一部分,不在.gitignore文件中,我認爲可能是插入必要代碼的正確位置。 – scaisEdge

+0

答案對我來說毫無意義。這可能是由於你的答案的拼寫錯誤和不合邏輯的結構。你可能想考慮改進你的答案。 –

0

我不知道這是不是最好的做法,你要完成什麼,但你可以提供一個新的INIT環境./init

environments文件夾包含兩個包含那些在./init(分別爲選項1) Development2) Production)設置未版本控制,所有的文件和devprodA bit more on environment folders here

因此,舉例來說,假設你要創建的開發環境的「定製」的版本,你要修改的前端入口腳本。

您會將environments/dev文件夾複製到environments/custom並在那裏自定義environments/custom/frontend/web/index.php文件。

然後添加以下environments/index.php

'Custom' => [ 
     'path' => 'custom', 
     'setWritable' => [ 
      'backend/runtime', 
      'backend/web/assets', 
      'frontend/runtime', 
      'frontend/web/assets', 
     ], 
     'setExecutable' => [ 
      'yii', 
     ], 
     'setCookieValidationKey' => [ 
      'backend/config/main-local.php', 
      'frontend/config/main-local.php', 
     ], 
    ], 

添加並提交更改,並從現在起,你應該有一個新的3) Custom選項,當您./init你和你的開發者可以用它來初始化應用程序。

PS:我沒有測試過這一點,但我認爲它應該工作(如果不僅一些小的調整應該是必要的)

+1

我認爲這會奏效,但對於我需要做的事情來說,它看起來像是「矯枉過正」。答案其實非常簡單。我只需將代碼從/frontend/web/index.php移動到/common/config/boostrap.php文件中。 但我會記住這一點,因爲它可能在未來非常方便。 – paviktherin