আমি ভিউ 3 ব্যবহার করছি ।
আমার একটি কাস্টম ভিউ ফিল্টার তৈরি করা দরকার যা তারিখের সীমা পরিচালনা করে। তাই আমি উদাহরণের দিকে তাকিয়ে আচরণটি অনুকরণ করার চেষ্টা করেছি এবং আমি কিছুটা সমস্যা পেয়েছি।
দেখে মনে হয় যে আমি যখন নিজের ক্লাসটি প্রসারিত করি views_handler_filter
, তখন কোয়েরি পদ্ধতিটি কখনই শুরু হয় না, তবে আমি যদি আমার ক্লাসটি প্রসারিত করি তবে views_handler_filter_string
এটি কাজ করে।
আমার অবশ্যই কিছু ভুলে যেতে হবে তবে আমি এখানে আটকে আছি।
আমার কোডটি এখানে, যদি কেউ একবার দেখে এবং যা ঘটেছিল সে সম্পর্কে আমাকে পরামর্শ দিতে পারেন, আমি খুব কৃতজ্ঞ হব।
আমার .views.inc
ফাইলটি এখানে :
<?php
class v3d_date_custom_filter extends views_handler_filter {
var $always_multiple = TRUE;
function value_form(&$form, &$form_state) {
//parent::value_form($form, $form_state);
$form['value']['v3d_date']['period'] = array(
'#type' => 'select',
'#title' => 'Period',
'#options' => array(
'7_days' => 'Last 7 days',
'yesterday' => 'Yesterday',
'today' => 'Today',
'custom' => 'Custom dates'),
'#default_value' => 'custom',
'#attributes' => array("onclick" => "period_click(this);"),
);
$form['value']['v3d_date']['start_date'] = array(
'#type' => 'date_popup',
'#date_format' => 'Y-m-d',
'#title' => 'Start date',
'#size' => 30);
$form['value']['v3d_date']['end_date'] = array(
'#type' => 'date_popup',
'#title' => 'End date',
'#date_format' => 'Y-m-d',
'#size' => 30);
}
function exposed_validate(&$form, &$form_state) {
if(is_null($form_state['values']['start_date']) &&
is_null($form_state['values']['start_date'])) {
return TRUE;
}
/*
* If we get array for start_date or end_date
* errors occured, but the date module will handle it.
*/
if(!is_string($form_state['values']['start_date']) ||
!is_string($form_state['values']['end_date'])) {
return TRUE;
}
/* Get day, month and year from start_date string */
if(!preg_match('/(\d+)-(\d+)-(\d+)/',
$form_state['values']['start_date'],
$start_date
)) {
return TRUE; }
/* Get day, month and year from end_date string */
if(!preg_match('/(\d+)-(\d+)-(\d+)/',
$form_state['values']['end_date'],
$end_date
)) {
return TRUE; }
/* Create timestamps and compare */
$start_date = mktime(0,0,0,$start_date[1],$start_date[2],$start_date[3]);
$end_date = mktime(0,0,0,$end_date[1],$end_date[2],$end_date[3]);
if($start_date >= $end_date) {
form_set_error('start_date','Start date must be anterior to end date.');
}
}
function query() {
die('fdsfds');
$this->ensure_my_table();
$field = "$this->table_alias.$this->real_field";
dsm($this);
}
}
?>
এবং আমার .module
ফাইল
<?php
function custom_filters_views_api() {
return array(
'api'=>3,
'path' => drupal_get_path('module','custom_filters') . '/views',
);
}
?>
এবং আমার অংশ views_data
যা আমার কাস্টম ফিল্টারটি ব্যবহার করে:
<?php
function voice_views_data() {
$data['v_tp_voice']['date_utc_agent'] = array(
'title' => t('date_utc_agent'),
'help' => 'date_utc_agent',
'field' => array('handler' => 'views_handler_field'),
'filter' => array('handler' => 'v3d_date_custom_filter'),
'sort' => array('handler' => 'views_handler_sort')
);
return $data;
}