如何在控制器中优雅地处理缺少的参数?

时间:2013-08-21 23:40:27

标签: php laravel laravel-4

missingMethod方法/钩子是为Laravel控制器执行捕获的方式的天才,但这是否是缺少方法参数的相同方法?

我想等于:

public function missingMethod($parameters) {
    echo "Missing!";
}

// but for arguments
public function missingArguments($parameters) {
    echo "Missing arguments!";
}

相反,我会收到类似的内容:

enter image description here

2 个答案:

答案 0 :(得分:7)

使用?在路由中,它将使它成为可选的'/ example / {id?}'在你的方法中给出参数默认值,即($ id = null)然后只检查null

希望有所帮助

答案 1 :(得分:1)

你所描述的实际上是一条路线 - 伪装成'缺少方法/论据'。

如果您有路线/example/1

你的控制器功能是

public function show($id)
{
      echo $id;
}

所以你的控制器功能是“缺失的争论”

public function missing()
{
    echo 'you need an id';
}

,你的网址是

/example

您的路线

Route::get('/example/{id}', ['as' => 'example.show', 'uses' => 'ExampleController@show']);
Route::get('/example', ['as' => 'example.missing', 'uses' => 'ExampleController@missing']);