在laravel网站上制作子类别

时间:2016-05-23 03:52:09

标签: php laravel laravel-4

所以我想扩展我的网站以拥有类似的地区网站,所以当用户打开我的网站时,它会被要求选择他/她感兴趣的区域,并让我说他在伦敦有趣,然后该网站将生成一个已经与该地区相关的所有内容的网页...

我尝试按照相同的方式创建管理员页面,方法是将它们分组到此路径中

Route::group(array('prefix'=>'admins','before' => 'auth'),function(){
    Route::resource('partner','AdminPartnerController',array('except' => array('show')));
    Route::get('partner/index_kategori/{id}',array(
        'as' => 'admins.partner.index_kategori',
        'uses' => 'AdminPartnerController@index_kategori'
});

但这意味着我需要为我要创建的每个区域创建不同的控制器功能,因此效率不高。

我想到的就像制作

一样
www.websiteadress.com/region

那么我怎么能抓住那个“/ region”并将该值添加到控制器中的每个函数中?如何建立那种路线?

更新

让它更容易理解,什么成为我的问题就像我有这个正常的路线:

Route::get('product/{id}',array( 'as' => 'product','uses' => 'PublicController@product'));
当我输入

时,这条路线的作用非常直接
www.websiteadress.com/product/12

它将打开12号产品页面,所以我的问题是如果我这样添加

www.websiteadress.com/Asia/product/12 

我如何让我的PublicController捕捉亚洲,后来我的产品功能我将只处理...?

2 个答案:

答案 0 :(得分:0)

当然,您不需要为每个地区创建控制器。您希望使用带有变量的简单路径:

Route::get('region/{region}', 'RegionController@show');

所有地区只有一个控制器:

public function show ($region)
{
    // Logic here
    return view('region.show', compact(['region']));
}

因此,当用户加载http://example.com/region/London时,show操作会在London变量中生成$region

答案 1 :(得分:0)

在搜索了几天并四处询问之后,我终于得到了最好的解决方案来回答我自己的问题而且我愿意将它分享到这里,所以有一天也许还有其他人想做想做的事...... / p>

所以首先在路线上创建这样的

Route::group(['prefix' => '{region}'], function(){
    Route::get('member',array('as' => 'member','uses' => 'PublicController@member'));
});

这条路线的作用就是将它分组为前缀,其值为区域变量,然后我将获取路径设置为控制器用于显示页面的位置,并将区域值用于使用

然后在我的PublicController

public function sitemap($region){
  if($region =='london'){
     //do something
  }else{
    //do something
  }
}

所以它是..我可以从前缀获取那些区域值并使用它。在我的情况下,我使用它来显示具有不同内容的特定页面。