如何在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;
}
}