Я не знаю, как установить функцию обратного вызова для страницы записи в кодеригере.
Я использую функцию 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();
И добавьте новое действие, где есть подробности о том, как это сделать здесь.
Что делать с новым действием, укажем на URL-адрес, который вы на карте routes.php
при необходимости, и обрабатываете его с помощью новой функции в вашем контроллере. Вам нужно будет написать модельную функцию для извлечения данных, поскольку она не передается из GC, или вы можете использовать действие для таргетинга обратного вызова и $row
на него через POST
или что-то такое, чтобы данные для записи доступный в представлении. (Посмотрите пример в приведенной выше ссылке).
напишите эти строки в \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;
}
чем называть те же, что и другие функции обратного вызова