Laravel资源控制器缺少方法

时间:2014-10-23 22:55:05

标签: php laravel laravel-4

我有一个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?

由于

2 个答案:

答案 0 :(得分:0)

取自Laravel Documentation

  

如果您使用资源控制器,则应定义__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。