2015-05-26 89 views
0

工作在我的控制器功能我使用的是require語句包含一個文件:重定向未在Laravel 4

require app_path().'/plivo/plivo.php'; 

這一說法後,我嘗試使用下面的語句從該控制器來重定向:

return Redirect::back()->with('success', 'Note added successfully'); 

然而,這給了我以下錯誤:

Call to undefined method Redirect::back()

我怎樣才能從這個函數重定向?

這是我的全碼:

public function sendSMS(){ 
    require app_path().'/plivo/plivo.php'; 
    $auth_id = "XXXXXXXXXXXX"; 
    $auth_token = "XXXXXXXXXXXXXXXXXXXXX"; 
    $p = new \RestAPI($auth_id, $auth_token); 

    $params = array(
     'src' => '1XX7XX0', 
     'dst' => '91XXXXXXXXX7', 
     'text' => 'Test SMS', 
     'method' => 'POST' 
    ); 
    $response = $p->send_message($params); 
    return Redirect::back()->with('success', 'Note added successfully'); 
} 
+0

您的代碼名稱空間是?試試'return \ Redirect :: back()...'? – Laurence

+0

@TheShiftExchange我也試過這個。不工作 –

+0

嗨@Vinod VT你的控制器看起來更清潔,如果你將plivo及其方法移動到一個包中。我可以看到它是一個短信網關。 https://www.plivo.com。我爲我使用的SMS網關創建了一個包,它使我可以像這樣做'Sms :: send('080000000','message'); 「我真的認爲你應該這樣做 – Digitlimit

回答

5

這個回答假設plivo.phpthis git repo

問題是plivo.php庫在全局名稱空間中定義了一個Redirect類。因此,Laravel不會將全局Redirect別名註冊爲指向Illuminate\Support\Facades\Redirect外觀。

所以,在你的最後一行return Redirect::back()->with(...);,則使用Redirect類是plivo.php庫,沒有Laravel的Illuminate\Support\Facades\Redirect類中定義的類。

最快的解決將是您的行更改爲:

return Illuminate\Support\Facades\Redirect::back()->with('success', 'Note added successfully'); 

另一種辦法是注入Laravel的重定向到控制器中,並用它來代替使用門面:

class MyController extends BaseController { 

    public function __construct(\Illuminate\Routing\Redirector $redirector) { 
     $this->redirector = $redirector; 
    } 

    public function sendSMS() { 
     require app_path().'/plivo/plivo.php'; 
     // 
     return $this->redirector->back()->with('success', 'Note added successfully'); 
    } 
} 

第三種選擇是更新代碼以使用具有名稱空間的plivo composer包。更新已經在回購的dev分支中完成,您可以找到here。如果你這樣做,你會擺脫你的require聲明並使用命名空間的plivo類。