在Slim中为路由参数指定默认值

时间:2013-09-26 05:38:52

标签: php routes slim

让我们说,我有

$app->get('/hello/:name', function($name){
  echo 'Hello' . $name;
});

是否可以为$name设置默认值,如果我只是转到

http://myurl.com/hello

*没有第二段,它将输出

  

Hello default

如果是,该怎么做? 如何在Slim中为路由参数指定默认值?

我知道有Optional Route Parameter,但我不确定是否使用它,因为它仍处于试验阶段。

感谢。

4 个答案:

答案 0 :(得分:3)

试试这个,我已经测试过了。我工作得很好。

<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->get('/hello(/:name)', function ($name = 'default') {
    echo "Hello, $name";
});
$app->run();

您可以这样访问:

http://slim.test.com/hello
http://slim.test.com/hello/srain

不能这样访问:

http://slim.test.com/hello/

更新:如果你想让他们两个都可以访问:

<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->get('/hello(/)(/:name)', function ($name = 'default') {
    echo "Hello, $name";
});
$app->run();

答案 1 :(得分:1)

您只需使用default parameters

$app->get('/hello/:name', function($name="default"){
  echo 'Hello' . $name;
});

答案 2 :(得分:0)

$app->get('/hello/:name', function($name){
  if (empty($name)){
    $name='default';
  }
  echo 'Hello' . $name;
});

答案 3 :(得分:0)

我遇到了类似的问题,我必须在请求中处理可选参数。试试这个我自己测试过。

$app->get('/hello(/:name)',function($name="default"){
  echo 'Hello' . $name;
});