我尝试使用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为空,我尝试使用重定向操作
答案 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)
你有路线冲突,每次都会拨打第一条路线。 试着改变你的路线。