【问题标题】:how can i pass second parameter as optional to the route in LUMEN?如何将第二个参数作为可选参数传递给 LUMEN 中的路由?
【发布时间】:2018-12-13 22:37:15
【问题描述】:

我的路由/web.php 文件

$router->group(['prefix' => 'api/v1'], function () use ($router) {    
    $router->get('post/{string}/comment/{length?}', 'PostController@index');
});

我的控制器文件

public function index($string, $length = 0){
    // boy
}

要执行的网址

localhost/project/public/api/v1/post/abcd/comment/1
    OR
localhost/project/public/api/v1/post/abcd/comment

我想要我的控制器中的字符串和长度值,字符串不是可选参数,但长度是可选的,如果我不提供它应该取 0

【问题讨论】:

  • 这段代码是怎么回事?看起来不错。
  • 这不是 laravel ......如果我要求 laravel 但我要求 LUMEN 看起来没问题。传递可选参数略有不同。
  • 你为什么要使用API​​fy这样的包:github.com/megaads-vn/apify来创建你的API

标签: php laravel lumen


【解决方案1】:

Lumen 使用不同的路由器,因此您需要稍微不同地定义可选参数:

来自documentation

$app->get('user[/{name}]', function ($name = null) {
    return $name;
});

所以你的情况是:

$router->get('post/{string}/comment[/{length}]', 'PostController@index');

【讨论】:

  • 控制器方法的函数头是什么样的:index()? $name(可能还有 $length)会嵌入到 Lumen Request 对象中,还是将 $name(可能还有 $length)作为第二个参数传递给 index()? Lumen 文档中没有此信息。
  • 它们可以作为参数在方法签名中使用,public function index($string, $length)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多