使用仅ID的两个变量输出路径url

时间:2017-11-05 08:47:26

标签: php laravel laravel-5 laravel-routing laravel-5.5

如果可能的话......这会怎么做? Laravel 5.5

route('section.category.subcategory',$subcategory->id) 

必须输出(routes / web.php也有get :: set)

/section/{parent_slug}/{subcategory_slug}

我可以轻松做到

route('section.category.subcategory',[
                                     'subcategory_slug' => $subcategory->slug, 
                                     'parent_slug'=>$parent->slug
                                     ]
);

但我试图避免不得不一直宣布这些事情。

我认为模型中的getRouteKeyName是第一个去的地方,但它只能找到一个变量。

RouteHandler不是做任何事情的地方,因为它读取了网址,而不是输出它?

我假设在一些文件中我不知道我将不得不设置这种逻辑。

if(requested_route is section.category.subcategory)){
   // get the parent_id of ID provided,
   // get parent's slug
   // build the url.
}

更好的是,我认为在拉动子类别列表时我可以进行左连接,所以我有$ subcategory-> parent_slug而不是去$ parent-> slug。这样

route('section.category.subcategory',[$subcategory]) 

拥有需要使用的所有变量。

1 个答案:

答案 0 :(得分:1)

我认为这个助手是个不错的选择,所以你可以像这样创建网址:

route('section.category.subcategory',build_category_parameters($subcategory)) 

你可以创建这样的函数:

function build_category_parameters($subcategory)
{
   // here any logic that is needed

   // here return array something like this
   return [ 'subcategory_slug' => $subcategory->slug, 
            'parent_slug'=> $subcategory->parent->slug
          ];
}

如果您还没有帮助文件,可以使用这种方式创建一个帮助文件Laravel - require php script in a service provider