【问题标题】:Redirect to a controller action, action not defined重定向到控制器动作,动作未定义
【发布时间】: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 调用......我希望我很清楚。

标签: php laravel laravel-5


【解决方案1】:

我没有在我的路由文件中添加指向 showRecommendations 的路由。有问题吗?

是的,这是个问题。因为重定向器检查分配给操作的路由并将用户重定向到该路由。

【讨论】:

  • 好的,但是如果我定义了一个路由,我们可以从这个页面上的任何地方访问。我只想在访问getRecommendations()后才能访问此页面。
  • 您可以只返回 $this->showRecommandations($data) 并将此方法的参数更改为 data 而不是 request 。
  • 那么,URL 不能通过 URL 访问?
  • 执行此操作时出现错误:Missing argument 1 for App\Http\Controllers\SeancesController::showRecommandations().
  • 我解决了这个问题,所以我接受你的回答。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 2016-10-06
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多