0

我有一个控制器digital,在该控制器中,我的一个功能是小部件,然后是小部件的几个公共功能,例如highlight

视图设置为 digital/widgets/highlights.php

我想让 url 显示为 domain.com/digital/widget/highlights 以及面包屑(自动导航)

public function widget()
{
$header["pageTitle"] = "TV Listing Widgets and Snippets";

$this->load->helper('breadcrumb');

$this->load->view('templates/header.php', $header);
$this->load->view('digital/widget');
$this->load->view('templates/modal.php');
$this->load->view('templates/footer.php');
}


public function highlights()
{
$header["pageTitle"] = "TV Highlights Widget";

$this->load->helper('breadcrumb');

$this->load->view('templates/header.php', $header);
$this->load->view('digital/widgets/highlights');
$this->load->view('templates/modal.php');
$this->load->view('templates/footer.php');
}

是否可以创建子类或函数或类似的东西?

4

4 回答 4

0

您需要在 CI 中使用路由:

http://ellislab.com/codeigniter/user-guide/general/routing.html

您可以将 /digital/highlights/ 映射到 /digital/widget/highlights。

于 2013-03-19T15:15:55.143 回答
0

Thanks! Worked it out

public function widgets($widget = null) {

switch($widget) {
case 'highlights':
$this->highlights();
break;
default:
$widget = "widgets";

$this->load->view(  

etc etc

于 2013-03-21T18:48:18.827 回答
0

不像你在做什么。

CI url的结构是:

domain.com/controller/function/arg1/arg2/etc...

因此,您希望“highlight”成为传递给 widget($value); 的值。然后,在小部件函数内部,一些 IF 语句说

if ($value == 'highlight')
{
    $this->highlight();
}

至少,我认为这是你想要做的

于 2013-03-19T13:54:56.917 回答
0

您可以使用 URI 路由https://www.codeigniter.com/userguide3/general/routing.html

$routes['digital/widget/highlights'] = 'digital/highlights';

但是由于您也说过其他一些功能,因此可能是 widget() 功能

如果你想在小部件段中显示一些其他功能,我建议你制作新的控制器 Widget.php,其中包含适用于 Widget 的书面函数,然后将其自定义为 CI URI Routing 可能如下所示:

$route['digital/widget/(:any)'] = 'digital/widget/$1';

希望这会有所帮助,对不起我的英语。

于 2017-06-12T16:44:14.657 回答