2014-12-07 79 views
2

我打算定义控制器如何管理笨航线

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Lookup extends CI_Controller { 
public function __construct() 
{  
    parent::__construct(); 
    if(!($this->php_session->get('logged_in'))) 
    { 
     redirect('login', 'refresh'); 
    } 
} 

public function add($lookup=null) 
{ 

} 

function edit($lookup=null,$id=null) 
{ 

} 

function save($lookup=null,$id=null) 
{ 

} 

function list($lookup=null) 
{ 

} 

该控制器是不同的查找表操作。查找表可以是教育,宗教,种姓等... 根据规划,给定的函数有$查找作为将定义查找表实现的参数。 作为MVC框架,路由定义为:控制器/方法/ PARAMS

我寻找如下所述溶液; 如果URI为传递:

**lookup/education/add** must route to **lookup/add/education** Where education is parameter for add function 
**lookup/education/edit/1001 must route to **lookup/edit/education/1001 where education and 1001 are parameters for edit function. 

如果有人回答我将感谢。谢谢!

+0

制作一堆每个“查找”参数,只是因为在未来你将面临可扩展性问题。举个例子,无论是在你的控制器/模型中,你将被迫定义什么字段(表X中的列[教育,宗教...]),这是代码将不可读的点,因为太多的if( )等。坚持:一种方法应该只处理一个“任务”(编辑宗教),规则称为“单一责任原则”。教育:控制器,模型,观点;宗教:控制器,模型,视图... – Kyslik 2014-12-07 17:50:53

+0

谢谢你的建议。我会尝试用多个控制器来实现 – 2014-12-08 01:47:33

回答

0

没有质疑(如在注释中描述)的整个方法的理智,你可以简单地实现这一目标使用CI routing:控制器

$route['lookup/(:any)/(:any)/(:any)'] = "lookup/$2/$1/$3"; 
1

你可以使用.htaccess或其他一些Apache配置文件来做到这一点。您将需要类似如下的内容:

RewriteEngine on 
RewriteRule ^/lookup/(.*)/(.*)/(.*)$ /lookup/$2/$1/$3 [L] 

您可能还需要这些调试:

RewriteLog /var/somewhere/some.log 
RewriteLogLevel 9