我正在使用 Codeigniter 构建一个网站,我非常喜欢在 MVC 模式中如何使用 URL 来引用控制器方法。这似乎非常合乎逻辑和直观,但是,我似乎遇到了一系列与这种模式有关的问题!
所以我正在建立一个活动网站,目前我正在通过一个主站点控制器传递所有内容,传递一些参数:
public function index($page = NULL, $city = NULL, $type_venue = NULL, $slug = NULL)
{
// if the page argument is empty show the homepage
if( ! ($page))
{
$page = 'home';
}
// create an array for passing to the views
$data = array(
'title_city' => $city,
'title_type_venue' => str_replace('-', ' ', $type_venue),
'locations' => $this->locations_model->load(),
'events' => $this->events_model->load($city, $type_venue, $slug),
'venues' => $this->venues_model->load($city, $slug)
);
// construct the page layout with the following views
$this->load->view('partials/head', $data);
$this->load->view('partials/header', $data);
$this->load->view('content/'.$page, $data);
$this->load->view('partials/footer');
}
这很好用,因为它会加载以下 URL 的内容:
site.com/events/bristol/open-mic/city-varieties/another-incredible-event
site.com/events/bristol/open-mic/city-varieties/
site.com/events/bristol/open-mic/
site.com/events/bristol/
但是,如果我想通过这个控制器传递任何其他不是事件的东西,即注册/用户,我必须为此编写一个特定的路由!
值得注意的是我的路由是:
$route['(:any)'] = 'site/index/$1';
我可以为每个实体编写单独的控制器,即事件、场地、城市,但每个控制器看起来都与上面的大致相似(对吗?),因为每个控制器都需要参数来获取数据。
我的问题是 - 开发这样的长查询字符串的最佳实践方法是什么?单个控制器是否正确?感觉不像,但是多个控制器会违反 DRY,只是因为它们都需要非常相似的数据。任何帮助表示赞赏!