Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter CRUD视图抽象_Php_Codeigniter - Fatal编程技术网

Php CodeIgniter CRUD视图抽象

Php CodeIgniter CRUD视图抽象,php,codeigniter,Php,Codeigniter,我正在使用CMS构建一个CMS,我在处理各种CRUD视图的最佳方法上遇到了难题。鉴于我的URL类似于 mydomain.com/admin/app/content/pages/edit …其中“admin”是我的控制器,“app”是我的操作方法,我当前将第3、4和5段映射到实际目录/文件,如下所示: /views /admin /content /pages list_view.php

我正在使用CMS构建一个CMS,我在处理各种CRUD视图的最佳方法上遇到了难题。鉴于我的URL类似于

mydomain.com/admin/app/content/pages/edit
…其中“admin”是我的控制器,“app”是我的操作方法,我当前将第3、4和5段映射到实际目录/文件,如下所示:

/views
    /admin
        /content
            /pages
                list_view.php
                edit_view.php
                add_view.php
            /banners
                list_view.php
                edit_view.php
                add_view.php
一个警告是,我需要根据调用的页面调用不同的非CRUD模型方法,因此我的app()操作方法开始有一个讨厌的if..else块。此外,由于不同的表数据,每个部分的视图看起来都不一样,因此我不知道如何避免出现一堆视图页面。显然,这一切的缺点是1)我重复了很多代码,2)如果我添加了一个新的管理部分,我必须实际创建大量新目录,并向if…else块添加一个新部分

因此,我的问题是:

  • 如何减少正在创建的目录和查看页面的数量
  • 方法是否可以用于任何自动化
  • 我的一个想法是分析与我交互的表,创建一个动态关联数组,定义我要公开的字段以及表单元素的类型,然后将其传递给公共视图。思想?缺陷?

    您可以使用CI_模型,并使用一些函数(如getProperties())来帮助处理通用积垢。与您提到的CI的list_fields()结合使用,您完全可以创建一些通用页面来实现这一点

    可以为任何对象处理表单数据的示例可能是

    function processForm() {
        $props = $this->self->getProperties(ReflectionProperty::IS_PUBLIC);
        foreach ($props as $prop) :
            $prop->setValue($this,$this->input->post($prop->getName()));
        endforeach;
    }
    
    在哪里


    虽然这可能无法直接回答您的问题,但它可能为您提供了设计CRUD的基础。我使用GroceryCRUD已经有相当一段时间了,我对它的基本和高级CRUD操作发誓。它的设计和构建都非常好,除了定制的文件结构之外,它似乎提供了您所需要的一切

    CRUD可以很容易地进行修改,以合并您正在寻找的文件/url结构


    太好了,谢谢。事实上,我在一个小时前刚刚找到了GroceryCRUD,我开始潜入其中。我想投你一票,但还没有足够的代表权。:)获得一些代表;)GroceryCRUD非常棒。只是小心不要太依赖积垢。它们在开发过程中都很好,但我经常发现我的应用程序超出了CRUD,我最终还是需要正确地开发它。不过,较新版本的《杂货店》非常棒——有大量的回调和上传等功能。1-many和1-1关系也很好。祝你的项目好运。只是一直在查看我的旧帖子,寻找任何没有答案的帖子-如果答案正确,你可以接受,即使你还不能投票。太好了,谢谢。我(还)不熟悉反射,但我会研究它。我想投你一票,但还没有足够的代表权。:)无论何时,只要你想开始编写可重用的代码,这绝对是有用的东西。
    $this->self = new ReflectionClass($this);