Как я могу использовать функции обратного вызова в groceryCrud для просмотра страницы записи?

1

Я не знаю, как установить функцию обратного вызова для страницы записи в кодеригере.

Я использую функцию callback_column, и она делает то, что мне нужно, в виде сетки, но на странице записи обзора она не работает.

Я искал их сайт и форум и не нашел ничего, что могло бы мне помочь.

Мой код выглядит так:

$zeus = new grocery_CRUD();
$zeus->set_theme('bootstrap');
// $zeus->set_language('romanian');

$zeus->set_table('programari');
$zeus->columns(array('id_client', 'id_sala', 'denumire', 'numar_persoane', 'observatii'));

$zeus->callback_column('id_sala',array($this,'_test_function'));

$cod = $zeus->render();

$this->_afiseaza_panou($cod);

public function _test_function($row, $value)
{
  return '0';
}
Теги:
codeigniter
grocery-crud

2 ответа

0
Лучший ответ

Насколько я знаю, GroceryCRUD не предоставляет обратные вызовы или другое средство переопределения вывода по умолчанию в состоянии представления.

Решением для настройки этого было бы создание настраиваемого представления, в которое вы будете вставлять данные из своей записи. Таким образом вы можете настроить макет и другую презентацию.

То, что вы тогда сделаете, отключит чтение по умолчанию с помощью:

$crud->unset_read();

И добавьте новое действие, где есть подробности о том, как это сделать здесь.

Что делать с новым действием, укажем на URL-адрес, который вы на карте routes.php при необходимости, и обрабатываете его с помощью новой функции в вашем контроллере. Вам нужно будет написать модельную функцию для извлечения данных, поскольку она не передается из GC, или вы можете использовать действие для таргетинга обратного вызова и $row на него через POST или что-то такое, чтобы данные для записи доступный в представлении. (Посмотрите пример в приведенной выше ссылке).

1

напишите эти строки в \libraries\Grocery_CRUD.php

на линии номер 3530

protected $callback_read_field      = array();

чем поставить эту функцию после вызова конструктора

public function callback_read_field($field, $callback = null)
{
    $this->callback_read_field[$field] = $callback;

    return $this;
}


//Now update this function to manage the field outputs using callbacks if they are defined for the same
protected function get_read_input_fields($field_values = null)
{
    $read_fields = $this->get_read_fields();

    $this->field_types = null;
    $this->required_fields = null;

    $read_inputs = array();
    foreach ($read_fields as $field) {
        if (!empty($this->change_field_type)
                && isset($this->change_field_type[$field->field_name])
                && $this->change_field_type[$field->field_name]->type == 'hidden') {
            continue;
        }
        $this->field_type($field->field_name, 'readonly');
    }

    $fields = $this->get_read_fields();
    $types  = $this->get_field_types();

    $input_fields = array();

    foreach($fields as $field_num => $field)
    {
        $field_info = $types[$field->field_name];

        if(isset($field_info->db_type) && ($field_info->db_type == 'tinyint' || ($field_info->db_type == 'int' && $field_info->db_max_length == 1))) {
            $field_value = $this->get_true_false_readonly_input($field_info, $field_values->{$field->field_name});
        } else {
            $field_value = !empty($field_values) && isset($field_values->{$field->field_name}) ? $field_values->{$field->field_name} : null;
        }
        if(!isset($this->callback_read_field[$field->field_name]))
        {
            $field_input = $this->get_field_input($field_info, $field_value);
        }
        else
        {
            $primary_key = $this->getStateInfo()->primary_key;
            $field_input = $field_info;
            $field_input->input = call_user_func($this->callback_read_field[$field->field_name], $field_value, $primary_key, $field_info, $field_values);
        }

        switch ($field_info->crud_type) {
            case 'invisible':
                unset($this->read_fields[$field_num]);
                unset($fields[$field_num]);
                continue;
                break;
            case 'hidden':
                $this->read_hidden_fields[] = $field_input;
                unset($this->read_fields[$field_num]);
                unset($fields[$field_num]);
                continue;
                break;
        }

        $input_fields[$field->field_name] = $field_input;
    }

    return $input_fields;
}

чем называть те же, что и другие функции обратного вызова

Ещё вопросы

Сообщество Overcoder
Наверх
Меню