繁体   English   中英

如果laravel 4不存在特定路由,则将其重定向到页面

[英]Redirect specific routes to page if they don't exist with laravel 4

如果他们提取的数据不存在,我需要将路由重定向到另一个页面。 路线是:

Route::get('{link}/{data}', 'LinkController@getLink');

{link}{data}与模型绑定的位置:

Route::model('link', 'Link');
Route::model('data', 'Data');

这样,当这个链接的数据不存在时,它就是404,如果它确实存在,它就会被带到页面。 我想要做的是重定向到另一个页面,否则链接将404.我已经找到了关于如何全局这样做的建议,但我只希望它发生在这一条路线上。

有任何想法吗?

// Link Controller

public function getLink($linkId, $dataId)
{
  if ( is_null($link) or is_null($data) ) {
    return Redirect::to('some/path');
  }
}

如果任何一个传递的模型在遇到控制器方法时为null,则只需重定向它们。 至于您所引用但未显示代码的/{link}路由,请在您处理的任何闭包/控制器中执行类似的操作。

摆脱模型绑定 - 你已经离开了cookie切割器领域。

Route::get('{link}/{data?}', 'LinkController@getLink');
// note I made the data ^ parameter optional
// not sure if you want to use it like this but it's worth pointing out

在控制器中执行所有模型检查,如下所示:

public function getLink($linkId, $dataId)
{
  $link = Link::find($linkId);
  $data = Data::find($dataId);

  if(is_null($link)){
    throw new NotFoundHttpException;// 404
  }
  elseif(is_null($data)){
    return Redirect::to('some/view');// redirect
  }
  // You could also check for both not found and handle that case differently as well.
}

从您的评论中很难确切地知道您希望如何处理缺失的链接和/或数据记录,但我相信您可以从逻辑上解决这个问题。 这个答案的要点是你不需要使用Laravel的模型绑定,因为你可以自己做:找到其他重定向记录或404。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM