sortiert oder gefiltert werden Ich habe ein benutzerdefiniertes Feld für eine Ansicht mit einem Modul erstellt. Um es hier besser zu visualisieren, habe ich es vereinfacht: Das benutzerdefinierte Feld generiert einfach eine zufällige Zahl zwischen 1 und 10.Benutzerdefiniertes Feld kann nicht in Ansichten für Drupal 7
Ich möchte diese Zufallszahl "Sortieren nach". Allerdings erhalte ich folgende Fehlermeldung, wenn Sie diese Einstellung in Ansichten mit:
SQLSTATE [42S22]: Column nicht gefunden: 1054 Unknown column 'my_custom_field' in 'field list'
Ich kämpfe um den Fehler zu lokalisieren in meinem Code.
Danke für jede Hilfe, die Sie in meinem Modul-Code zur Verfügung stellen können !!
Hier sind meine Dateien:
my_custom_module.info
name = My Custom Module
description = Implement random number in views.
core = 7.x
files[] = includes/views_handler_my_custom_field.inc
my_custom_module.module
<?php
/**
* Implements hook_views_api().
*/
function my_custom_module_views_api() {
return array(
'api' => 3,
);
}
my_custom_module.views.inc
<?php
/**
* Implements hook_views_data().
*/
function my_custom_module_views_data() {
$data['my_custom_module']['table']['group'] = t('My custom module');
$data['my_custom_module']['table']['join'] = array(
// Exist in all views.
'#global' => array(),
);
$data['my_custom_module']['my_custom_field'] = array(
'title' => t('My custom field'),
'help' => t('My custom field displays a random number.'),
'field' => array(
'handler' => 'views_handler_my_custom_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_numeric',
),
);
return $data;
}
views_handler_my_custom_field.inc
<?php
/**
* @file
* Custom views handler definition.
*/
/**
* Custom handler class.
*
* @ingroup views_field_handlers
*/
class views_handler_my_custom_field extends views_handler_field {
/**
* {@inheritdoc}
*
* Perform any database or cache data retrieval here. In this example there is
* none.
*/
function query() {
}
/**
* {@inheritdoc}
*
* Modify any end user views settings here. Debug $options to view the field
* settings you can change.
*/
function option_definition() {
$options = parent::option_definition();
return $options;
}
/**
* {@inheritdoc}
*
* Make changes to the field settings form seen by the end user when adding
* your field.
*/
function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
}
/**
* Render the random field.
*/
public function render($values) {
$random = rand(1, 10);
return $random;
}
}
Danke, dass Sie sich die Zeit genommen haben zu antworten! Ich verstehe jetzt die Logik besser. Leider muss ich den Ansatz meines "größeren Bildes" ändern, da diese Methode nicht funktioniert. Das tatsächliche benutzerdefinierte Feld, das ich erstellt habe, ist gemäß dem angemeldeten Benutzer dynamisch (wie bei einem Kontextfilter). Das Problem ist, dass ich mehrere kontextabhängige Filter benötige, die eine ODER-Funktion zwischen ihnen verwenden und für die der Benutzer mitspielen kann. Zeit Plan B zu finden ... – Matt