如何在get路由中将默认参数传递给laravel控制器

如何在get路由中将默认参数传递给laravel控制器,laravel,laravel-4,laravel-routing,Laravel,Laravel 4,Laravel Routing,我有一条这样的路线: Route::get('category/{id}/{date?}', array('as' => 'category/date', 'uses' => 'Controller@getCategory')); 我想在调用“/”根路由时使用默认参数运行@getCategory。因此,如果调用了“/”路由,则getCategory函数应该以id=1和date=2015-12-18运行 我应该怎么做?将其注册为单独的路由: Route::get('/','Contr

我有一条这样的路线:

Route::get('category/{id}/{date?}', array('as' => 'category/date', 'uses' => 'Controller@getCategory'));
我想在调用“/”根路由时使用默认参数运行@getCategory。因此,如果调用了“/”路由,则getCategory函数应该以id=1和date=2015-12-18运行


我应该怎么做?

将其注册为单独的路由:

Route::get('/','Controller@getCategory')->命名为('home');
路由::get('category/{id}/{date?}','Controller@getCategory')->命名('类别/日期');
然后在控制器中,为这些参数设置默认值:

getCategory公共函数($id=1,$date='2015-12-18')
{
//施展你的魔法。。。
}

它适用于我在路径中使用
“?”{date?}
,并将默认值放入anonimus函数中
$date=null

路线

Route::get('category/{id}/{date?}', function($date = null) {
   if ($date === null)
      //Option 1
   else
      //Option 2    
});

路由,例如在我的例子中,我的评论有多态关系

 Route::get('posts-comments/{commentable_id}', ['uses' => 'CommentController@fetchComments', 'commentable' => 'posts']);

 Route::get('video-comments/{commentable_id}', ['uses' => 'CommentController@fetchComments', 'commentable' => 'videos']);
然后在控制器中

 public function fetchComments(Request $request, commentable_id)
  {
    $commentable = $request->route()->getAction()['commentable'];
  }

我希望这能首先回答你的问题,请原谅我的英语写作不好。 回答情感性和罗伯特的问题: 我们可以在routes/web.php中使用一个类 然后在控制器中使用它,例如:

路由/web.php

LocalizationController.php

LocalizationController.php


当然这是一种方法。但有什么方法可以在一个路由中而不是在控制器中实现这一点吗?我也想知道如何在路由中传递静态参数。到处都找不到答案(如果要根据布线模式使用不同的默认值,解决方案是什么?
class SomeVars {
    public $var1 = 'en';
    public $var2 = 'fr';
}   
Route::get('/localization/{vars}','LocalizationController@index');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use SomeVars;
class LocalizationController extends Controller {
    public function index(Request $request, SomeVars $vars) {
        echo $vars->var1;
        echo $vars->var2;
    }
}   
class SomeVars {
    public $var1 = 'en';
    public $var2 = 'fr';
}   
Route::get('/localization','LocalizationController@index');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use SomeVars;
class LocalizationController extends Controller {
    public $vars;
    public function __construct(SomeVars $vars){
        $this->vars = $vars;
        
    }
    public function index(Request $request) {
        echo $this->vars->var1;
        echo "<br>";
        echo $this->vars->var2;
    }
}