我有一个laravel资源控制器如下:
BlogController.php
class AdminBlogController extends BaseController {
public function index()
{
// some code
}
public function create()
{
// some code
}
//等.....
在route.php中的我有这个:
Route::resource('blog', 'AdminBlogController');
现在我明白了当你去URL / blog时,它会转到index(),当你去/ blog / create时会转到create()方法。
我的问题是如何处理遗漏方法?例如,当某些类型/博客/测试时,我在那里收到错误,如何将丢失的方法重定向到/ blog?
由于
答案 0 :(得分:0)
如果您使用资源控制器,则应定义__call 控制器上的魔术方法,用于处理任何缺失的方法。
答案 1 :(得分:0)
在AdminBlogController中,添加__call
魔术方法:
public function __call($method,$parameters = array())
{
if (!is_numeric($parameters[0])) {
return Redirect::to('blog');
}
else {
$this->myShow($parameters[0]);
}
}
...而且,重要的是,您需要将show
方法重命名为其他方法(在此示例中为myShow
)。否则,/blog/test
将路由到show
,期望test
是您要显示的博客的ID。您还需要在__call
方法中指定blog/
之后哪些参数应被视为ID,哪些参数应被视为缺失方法。在此示例中,我允许将任何数字参数视为ID,而非数字参数将重定向到Index。