我有这样的路线:
Route::get('category/{id}/{date?}', array('as' => 'category/date', 'uses' => 'Controller@getCategory'));
我想在调用' /'时使用默认参数运行@getCategory根路线。所以如果' /'调用的路由,getCategory函数应该以id = 1和date = 2015-12-18运行。
我该怎么做?
答案 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
});