重定向次数过多laravel
我尝试在控制器中使用重定向->操作It错误过多重定向重定向次数过多laravel,laravel,laravel-5,Laravel,Laravel 5,我尝试在控制器中使用重定向->操作It错误过多重定向 try { //If check urL category null if (is_null($category)){ Log::error("[Front] MenuController@menu : notfound public category "); //error redirect return redirect()->action('Front\HomeSlideviewCo
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为空,我会尝试使用重定向操作,如果您有路由冲突,它每次都会调用第一个路由。
尝试更改您的路线。您有路线冲突,它每次都会呼叫第一条路线。
尝试更改路线。两条路线相同,只有第一条路线匹配 请注意,当重定向到操作时,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');
}
两条路线完全相同,只有第一条路线匹配 请注意,当重定向到操作时,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捕获重定向到路由2,他们的方法是什么?因此它将与类似
redirect()->route('promotiondetail',$url)一样代码>对吗?你不需要创建两个路由和重定向,只需要一个并返回不同的响应,请检查我的更新答案:)你能再解释一下什么是ShowPage(),showsingleNews()这是函数吗?公共函数ShowPage(Page$Page){返回视图('pages/static Page',['page'=>$page]);}
如果空的路由1捕获重定向到路由2,他们会怎么做?因此它将与redirect()->route('promotiondetail',$url)相同
对吗?您不需要创建两个路由和重定向,只需要一个并返回不同的响应,请检查我的更新答案:)您能再解释一下什么是ShowPage(),showsingleNews()这是函数吗?公共函数ShowPage(Page$Page){返回视图('pages/static Page',['page'=>$page]);}
你能给我举一些像Route::get('/{url?}','MenuController@menu');路由::get('/home/{name?}','HomeSlideviewController@index')->name('promotiondetail')
我知道如何做这样的事情,谢谢,但还是要删除/home/?你能给我举一些像Route::get('/{url?}',这样的例子吗MenuController@menu');路由::get('/home/{name?}','HomeSlideviewController@index')->name('promotiondetail')
嗯,我知道怎么做这样的事,谢谢,但还是要删除/home/?