public function index($id,$task){
dump($task);
dump($id);
}
上述的输出将是atomic和1 defaults()方法只有键值对参数
/**
* Set a default value for the route.
*
* @param string $key
* @param mixed $value
* @return $this
*/
public function defaults($key, $value)
{
$this->defaults[$key] = $value;
return $this;
}
假设您想传递多个数组参数,那么使用setDefaults方法,如下所示
Route::get('/atomic/{id}',[ApiController::class,'index'])->setDefaults([
'tasks'=> 'atomics',
'postTitle'=>'post title goes here'
]);
然后在控制器中
public function index($id,$tasks,$postTitle){
dump($tasks);
dump($postTitle);
dump($id);
}
1条答案
按热度按时间sdnqo3pr1#
defaults
方法有助于将额外的参数传递给controller
,而不作为route params
传递作为一名后端工程师,你经常会被要求在不破坏当前路由结构的情况下生成与网站其他部分不兼容的URL模式。通常你会为你的内容创建一个所谓的"鼻涕虫"。一个简单的连字符分隔的字符串,在系统中是唯一的。一个典型的slug将从标题中生成,如"我的简单文章"成为一个slug my-simple-article。这样就有了'在系统中,每个帖子都有一个唯一的字符串。
如果你已经在你的系统中实现了这样的路径,你可能会有类似/post/{slug}的url,但是你现在知道这还不够好。你公司的营销团队或者SEO奇才希望它是/{slug},这是相当棘手的。你不能创建模式/{post-slug},因为它会混淆系统。什么是你有一个关于我们的页面或联系我们的页面,同样重要的url分别像/about-us和/contact-us.这里的问题是,路由系统可能会拿起/about-us链接,并认为这是一个后模型的鼻涕虫.在这一点上,Laravel将不会找到模型,而是抛出一个HTTP 404错误。
这就是路线上的"默认"方法被用来节省时间的地方。
如果我考虑一下你例子
在控制器中点击URL
http://127.0.0.1:8002/atomic/1
时,您将获得两个参数$id
和$task
上述的输出将是
atomic
和1
defaults()方法只有键值对参数
假设您想传递多个数组参数,那么使用
setDefaults
方法,如下所示然后在控制器中
现在,如果您点击URL
http://127.0.0.1:8002/atomic/1
,则将打印参考:The Power of Laravel’s Route ‘defaults’ for making root level SEO pages