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

tnkciper  于 2023-02-17  发布在  其他
关注(0)|答案(5)|浏览(117)

我有一条这样的路线:

Route::get('category/{id}/{date?}', array('as' => 'category/date', 'uses' => 'Controller@getCategory'));

我想在调用“/”根路由时使用默认参数运行@getCategory。因此,如果调用“/”路由,getCategory函数应使用id=1和date=2015-12-18运行。
我该怎么做呢?

2ic8powd

2ic8powd1#

将其注册为单独的路由:

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...
}
z2acfund

z2acfund2#

路线**,例如在我的情况下,我有多态关系的评论

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

我希望这能回答你的问题

wwwo4jvm

wwwo4jvm3#

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

路由/web.php

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

本地化控制器. 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;
    }
}

现在,如果您浏览:some站点/本地化/anything看到此结果:
en fr
如果你需要在你的控制器的all方法中使用这个类,你可以这样使用:

路由/web.php

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

本地化控制器. 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;
    }
}

现在,如果您可以在浏览器中找到此地址:某些站点/本地化可能再次看到此结果:
en fr
我希望这能帮上忙,谢谢,希望上帝

wz1wpwve

wz1wpwve4#

使用Laravel 9.x为路线设置默认值

Route::get('categories/{id}/{date?}', 'CategoryController@getCategory')
     ->name('category-date')
     ->defaults('date', '2023-02-13');
chhkpiq4

chhkpiq45#

我在route中使用"?" {date?},并在anonimus函数中放置默认值。$date = null

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

相关问题