重定向不适用于 Laravel 4
Redirect is not working on Laravel 4
在我的控制器函数中,我使用 require
语句来包含一个文件:
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');
}
此答案假定 plivo.php
来自 this git repo。
问题是 plivo.php
库在全局命名空间中定义了 Redirect
class。因此,Laravel 没有注册全局 Redirect
别名以指向 Illuminate\Support\Facades\Redirect
facade。
因此,在最后一行 return Redirect::back()->with(...);
中,使用的 Redirect
class 是 plivo.php
库中定义的 class,而不是 Laravel的Illuminate\Support\Facades\Redirect
class.
最快的解决方法是将您的线路更改为:
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 classes.
在我的控制器函数中,我使用 require
语句来包含一个文件:
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');
}
此答案假定 plivo.php
来自 this git repo。
问题是 plivo.php
库在全局命名空间中定义了 Redirect
class。因此,Laravel 没有注册全局 Redirect
别名以指向 Illuminate\Support\Facades\Redirect
facade。
因此,在最后一行 return Redirect::back()->with(...);
中,使用的 Redirect
class 是 plivo.php
库中定义的 class,而不是 Laravel的Illuminate\Support\Facades\Redirect
class.
最快的解决方法是将您的线路更改为:
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 classes.