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

时间:2015-12-18 19:05:23

标签: 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运行。

我该怎么做?

4 个答案:

答案 0 :(得分:4)

将其注册为单独的路线:

Route::get('/', 'Controller@getCategory')->named('home');
Route::get('category/{id}/{date?}', 'Controller@getCategory')->named('category/date');

然后在您的控制器中,为这些参数设置默认值:

public function getCategory($id = 1, $date = '2015-12-18')
{
    // do your magic...
}

答案 1 :(得分:0)

路线,例如,在我的案例中,我与评论具有多态关系

 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'];
  }

我希望这能回答您的问题

答案 2 :(得分:0)

首先,请原谅我英语写作不好。 回答 道德 Robert 的问题: 我们可以在routes / web.php中使用一个类 然后在控制器中使用它,例如:

路由/web.php

class SomeVars {
    public $var1 = 'en';
    public $var2 = 'fr';
}   
Route::get('/localization/{vars}','LocalizationController@index');

LocalizationController.php

<?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;
    }
}   

现在,如果您浏览:someSite / localization / anything 看到这个结果:

en fr


,如果您需要在控制器的all方法中使用此类,则可以使用以下方式:

路由/web.php

class SomeVars {
    public $var1 = 'en';
    public $var2 = 'fr';
}   
Route::get('/localization','LocalizationController@index');

LocalizationController.php

<?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;
    }
}           

现在,如果可以的话,请在浏览器中输入以下地址:someSite / localization 可以再次看到此结果:

en fr

我希望这种帮助,谢谢,希望上帝

答案 3 :(得分:-1)

路线中使用"?" {date?},并在 anonimus函数中设置默认值。$date = null

<强>路线

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