2011-07-21 44 views
0

我對symfony的理解有時並非恆星。我剛剛遇到了這個問題,我真的不知道如何在這種情況下傳遞一個變量,但不幸的是不知道該看什麼才能更好地理解我在做什麼。如何在symfony 1.4中將變量傳遞給前端/ lib中的類

我不能在類中使用$this->getUser,因爲它在symfony模式之外(顯然是?),所以將它存儲在會話中不是一個選項。

我已經嘗試過不同的方法傳遞變量,但是...我想我只是沒有做到這一點,因爲不清楚這種信息交換如何在這種情況下工作。

的代碼是在這裏,住在該文件夾的應用程序/前端/ lib目錄下:

public function postCompletedForm($campaign_id, $hp_affiliate_id, $params = array(), &$response) 
{ 
    $params[ 'ip_address' ] = $_SERVER[ 'REMOTE_ADDR' ]; 
    if (isset($ip_override)) //this is what I need to pass in 
    { 
    $params[ 'ip_address' ] = $ip_override; 
    } 
    $params[ '__timestamp' ] = date('Y-m-d H:i:s'); 

    $response = $this->sfWebBrowser->post($this->api_endpoint . 'post/' . $campaign_id . '/' . $hp_affiliate_id . '/', $params)->getResponseText(); 
    return (preg_match('/(1<\/SUCCESS>)/', $response)) ? true : false; 
} 

它使用一個動作前端內的模塊中也是如此。這真的不是一個大工作,我知道答案會非常簡單。我只是不知道要尋找什麼,因爲我知道的PHP和框架讓我失望。

感謝您的幫助!如果這是一個荒謬的問題,我很抱歉。有一些我幾乎沒有碰到的方面,儘管很奇怪。

回答

2

如果你知道這個代碼將只在前端應用程序來執行,你總是可以達到與您的用戶類(以及各種其他類似的方式):

sfContext::getInstance()->getUser(); 

http://www.symfony-project.org/api/1_4/sfContext

+0

哇,就像那樣。很簡單,哈哈。這種方法有沒有更好的方法或任何潛在的併發症?順便說一句,非常感謝。 –

+1

沒有上下文時可能會出現問題。例如,運行CLI命令時。如果你知道這個代碼有可能在沒有上下文的情況下調用,那麼你應該用if(sfContext :: hasInstance())來包裝它。 – petraszd

+1

有趣的** [arcticle](http://webmozarts.com/2009/07/01/why-sfcontextgetinstance-is-bad/)** – denys281

相關問題