Vin*_* VT 0 php redirect require laravel laravel-4
在我的控制器功能中,我使用一个require语句来包含一个文件:
require app_path().'/plivo/plivo.php';
Run Code Online (Sandbox Code Playgroud)
在此语句之后,我尝试使用以下语句从此控制器重定向:
return Redirect::back()->with('success', 'Note added successfully');
Run Code Online (Sandbox Code Playgroud)
但是,这给了我以下错误:
调用未定义的方法
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');
}
Run Code Online (Sandbox Code Playgroud)
这个答案假定plivo.php来自这个git repo.
问题是plivo.php库Redirect在全局命名空间中定义了一个类.因此,Laravel没有注册全局Redirect别名以指向Illuminate\Support\Facades\Redirect外观.
因此,在最后一行中return Redirect::back()->with(...);,Redirect使用的类是plivo.php库中定义的Illuminate\Support\Facades\Redirect类,而不是Laravel的类.
最快的解决方法是将您的行更改为:
return Illuminate\Support\Facades\Redirect::back()->with('success', 'Note added successfully');
Run Code Online (Sandbox Code Playgroud)
另一个选择是将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');
}
}
Run Code Online (Sandbox Code Playgroud)
第三种选择是更新代码以使用具有命名空间的plivo composer包.更新已在devrepo 的分支中完成,您可以在此处找到.如果你这样做,你将摆脱你的require语句并使用命名空间的plivo类.
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |