繁体   English   中英

是否可以使用不同的网址显示同一页面?

[英]Is it possible to show same page with different url?

我想为不同的URL显示相同的内容。 例如:

website.com/controllername/country/state1/dist1/
website.com/controllername/country/state2/dist2/

我希望这两个URL显示相同的内容,即使某些内容会因URL而异(例如州名和地区名)。 我不想为每个URL创建单独的内容/页面。 我想知道是否可以在Codeigniter中这样做吗? 并且可以在Codeigniter中显示类似上面的URL?

是的,使用Codeigniter路由是可能的,

在您的application/config/routes.php粘贴以下代码,并更改您使用的控制器和函数名称,

$route['([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])'] = 'your_controller_name/your_function_name/$1/$1/$1';

与其他框架不同,CodeIgniter没有全局模板系统。 除非另有说明,否则每个控制器都独立于系统控制自己的输出,并且视图为FIFO。

例如,如果我们有一个全局标题:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<html>
    <head>
        <title><?=$title?></title>
        <!-- Javascript -->
        <?=$javascript ?>
        <!-- Stylesheets -->
        <?=$css ?>
    </head>
    <body>
        <div id="header">
            <!-- Logos, menus, etc... -->
        </div>
        <div id="content">

和全球页脚:

</div>
        <div id="footer">
            <!-- Copyright, sitemap, links, etc... -->
        </div>
    </body>
</html>

那么我们的控制器将不得不看起来像

class Welcome extends Controller {

    function index() {
        $data['title'] = 'My title';
        // Javascript, CSS, etc...

        $this->load->view('header', $data);

        $data = array();
        // Content view data
        $this->load->view('my_content_view', $data);

        $data = array();
        // Copyright, sitemap, links, etc...
        $this->load->view('footer', $data);
    }
}

是的,您可以在路由上使用不同的URL设置来设置同一页面。 请参阅下面的链接以获取更多信息: https : //www.codeigniter.com/userguide3/general/routing.html

$ route ['controllername / country / state1 / dist1 /'] ='catalog / product_lookup'; $ route ['controllername / country / state1 / dist2 /'] ='catalog / product_lookup';

改善krishnaraj答案...

您需要website.com/controllername/method1/st/dist/ website.com/controllername/method2/st/dist/

//为了更好的理解,我更改了一些变量,而“国家”将//是主要更改

所以在您的控制器上

public function method1($st1,$st2){ 
     $this->load->view('header');

     $this->load->model('data_processing');
     $data['data'] = $this->data_processing->any_model_function($st1,$st2);

     $this->load->view('page_you_want',$data);
     //here you choose the same view for both methods

     $this->load->view('footer');
}

public function method2($st1,$st2){ 
     $this->load->view('header');

     $this->load->model('data_processing');
     $data['data'] = $this->data_processing->any_model_function($st1,$st2);

     $this->load->view('page_you_want',$data); 
     //here you choose the same view

     $this->load->view('footer');
}

在Kavin Smk解释的路由配置情况下,只注意到一个错误,而不是

'your_controller_name/your_function_name/$1/$1/$1';

应该是

'your_controller_name/your_function_name/$1/$2/$3';

好吧,总有很多方法可以做到这一点,选择您自己的方法……祝您好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM