【发布时间】:2018-06-11 10:24:05
【问题描述】:
我正在使用 Laravel 5.5。
我的目标是重定向到同一控制器上的另一个方法以显示带有数据的视图。
class SeancesController extends Controller {
...
public function getRecommandations(Request $request) {
...
$data = [
'recommandationAutresActiviteMemeDateHeure' => $recommandationAutresActiviteMemeDateHeure,
'recommandationsMemeActiviteMemeHeure' => $recommandationsMemeActiviteMemeHeure,
'recommandationsMemeActiviteMemeDate' => $recommandationsMemeActiviteMemeDate
];
return redirect()->action('SeancesController@showRecommandations', $data);
}
public function showRecommandations(Request $request) {
return view('listeRecommandations', $request->data);
}
}
这是正确的方法吗?因为我收到了这个错误:
InvalidArgumentException:未定义 Action App\Http\Controllers\SeancesController@showRecommandations。在文件 /home/nicolas/public_html/M1_CSI/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php 第 338 行
我需要使用action,因为我使用ajax 调用来访问getRecommandations()。
我使用了这个文档:http://laraveldaily.com/all-about-redirects-in-laravel-5/。
我没有在我的路由文件中添加指向showRecommendations 的路由。有问题吗?
感谢您的帮助!
【问题讨论】:
-
你有调用那个确切方法的路由吗?您可能需要像
Route::get('foobar', 'SeancesController@showRecommandations');这样的路由才能使其工作。 -
方法
showRecommandations()?不,我没有定义路线。 -
@Marwelln 但用我替换的
foobar因为这条路线不是通过网址调用的。 -
为什么要使用 redirect() ?你可以简单地调用 $this->showRecommandations($request); - 但是仅仅为了返回视图调用另一个方法不是一个好习惯
-
因为我使用的是 ajax,如果我没有使用 redirect(),视图将返回到 ajax 调用......我希望我很清楚。