CodeIgniter CRUD Просмотреть абстракцию - PullRequest
3 голосов
/ 13 октября 2011

Я создаю CMS, используя CodeIgniter , и я озадачен лучшим способом обработки различных представлений 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.

Итак, мои вопросы:

  1. Как уменьшить количество каталогов и страниц, которые я создаю?
  2. Можно list_fields() или field_data () методы пригодны для какой-либо автоматизации?

Одна из моих идей заключалась в профилировании таблицы, с которой я взаимодействую, в создании динамического ассоциативного массива, определяющего, какие поля яхотите представить, а также тип элемента формы, который он должен быть, а затем передать это в общее представление.Мысли?Недостатки?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Хотя я понимаю, что это может не быть прямым ответом на ваш вопрос, оно может предоставить вам основу для разработки вашего CRUD.Я уже давно пользуюсь GroceryCRUD и клянусь им за базовые и продвинутые операции CRUD.Он довольно хорошо спроектирован и построен, и, помимо индивидуальной файловой структуры, предлагает все, что вы ищете.CRUD можно легко изменить, включив в него искомую структуру файла / URL.

@ см. http://www.grocerycrud.com/

1 голос
/ 13 октября 2011

Вы можете расширить CI_Model и использовать некоторые отражение функции, такие как getProperties (), чтобы помочь с вашими общими CRUD.В сочетании с 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;
}

, где

$this->self = new ReflectionClass($this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...