laravel

时间:2017-11-02 10:57:28

标签: laravel laravel-5

我尝试使用redirect-> action它在我的控制器中错误地重定向

try {
  //If check urL category null
  if (is_null($category)){
      Log::error("[Front] MenuController@menu : notfound public category ");

      //error redirect
       return redirect()->action('Front\HomeSlideviewController@index', $url);
  }
} catch (\Exception $e) {
    return 'error';
}   

这是我的web.php

  Route::get('/{url?}', 'MenuController@menu');
  Route::get('/{name?}', 'HomeSlideviewController@index')->name('promotiondetail');

如果Url为空,我尝试使用重定向操作

2 个答案:

答案 0 :(得分:1)

两条路线都是相同的,只有第一条匹配。

请注意,当重定向到操作时,Laravel正在解决您的路由操作,因此它与重定向到路由名称(更加防弹)相同。顺便说一句,第二个参数应该是一个数组。

return redirect()->action('Front\HomeSlideviewController@index', $url);

要做你想做的事,你需要一个catchAll动作并根据你的逻辑返回不同的回答:

/**
 * @param $string
 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 */
public function catchAllAction($string)
{
    $page = Page::whereHas('translations', function ($query) use ($string) {
        $query->where('locale', App::getLocale())->where('slug', $string);
    })->first();

    if ($page) {
        return $this->showPage($page);
    }

    $news = News::whereHas('translations', function ($query) use ($string) {
        $query->where('locale', App::getLocale())->where('slug', $string);
    })->first();

    if ($news) {
        return $this->showSingleNews($news);
    }

    throw new NotFoundHttpException('This page does not exist');
}

答案 1 :(得分:0)

你有路线冲突,每次都会拨打第一条路线。 试着改变你的路线。