如何在ci中动态创建方法


how to create a method on the fly in ci

我正在为我的图像网站写一个控制面板。我有一个名为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()方法,必须从url调用它。

我想在不使用.haccess文件或路由的情况下这样做。

是否有一种方法可以在CodeIgniter中创建一个方法?

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";

这将发送编辑和删除到get_posts,但你也可以只定义那些上面的类别路由

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

在获取类别之前解析编辑和删除操作。因为你只有两个方法冲突,所以这应该不是一个太大的问题。

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

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

但我是一个大CI迷,而不是Yii。不过Yii也很酷。

但是Codeigniter有一个替代的web解决方案。

http://formigniter.org/。