如何在ci中动态创建方法

时间:2013-04-24 18:31:48

标签: php codeigniter

我正在为我的图片网站编写一个控制面板。我有一个名为category的控制器,如下所示:

class category extends ci_controller
{
    function index(){}// the default and when it called it returns all categories 

    function edit(){}

    function delete(){}

    function get_posts($id)//to get all the posts associated with submitted category name
    { 

    }
}

我需要的是当我致电http://mysite/category/category_name时,我得到所有帖子而无需调用get_posts()方法,必须从网址调用它。

我想在不使用.haccess文件或路由的情况下执行此操作。

有没有办法在CodeIgniter中动态创建方法?

2 个答案:

答案 0 :(得分:1)

function index(){
    $category = $this->uri->segment(2);
    if($category)
    {
        get_posts($category); // you need to get id in there or before. 
    }

    // handle view stuff here

}

我读取您的请求的方式是您希望索引根据uri段中是否有类别来处理所有内容。你可以这样做但是真的,你为什么要这样做?

坚持不使用框架的正常功能而不解释您不想要的确切原因是不合逻辑的。如果您有权访问此控制器,则可以访问路由。那你为什么不想用呢?

修改

$route['category/:any'] = "category/get_posts";

那个WOULD会向get_posts发送编辑和删除,但你也可以在类别路由上面定义那些

$route['category/edit/:num'] = "category/edit";
$route['category/delete/:num'] = "category/delete";
$route['category/:any'] = "category/get_posts";

这将解析在类别提取之前的编辑和删除。由于你只有两种冲突的方法,所以这不应该是一个很大的问题。

答案 1 :(得分:0)

动态创建方法yii是PHP框架中最好的方法。简单而强大的Gii& CRUD

http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app

但我不是Yii的大粉丝。 yii虽然很酷。

但Codeigniter有另一种网络解决方案。

http://formigniter.org/此处。