查看记录页面如何使用groceryCrud的回调函数?

How can I use callback functions in groceryCrud for the view record page?

不知道在codeigniter中怎么设置查看记录页面的回调函数

我使用 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';
}

据我所知,GroceryCRUD 不提供回调或覆盖视图状态中默认输出的其他方法。

对此进行自定义的解决方案是创建一个自定义视图,您将在其中插入记录中的数据。这样您就可以自定义布局和其他演示文稿。

然后您要做的是取消设置默认阅读视图:

$crud->unset_read();

并添加一个新操作,其中包含有关如何执行此操作的详细信息here

如何处理新操作是将其指向 URL,如有必要,您将其映射到 routes.php 中,并使用控制器中的新函数处理它。您要么必须编写一个模型函数来检索数据,因为这不是从 GC 传递的,或者您可以使用该操作来定位回调并通过 POST 或其他方式将 $row 提供给它记录的数据可在视图中访问。 (看上面link中的例子)。

将这行写在\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;
}

比调用其他回调函数相同