Как в админке модуля указать путь к файлу через проводник ?

Аватар пользователя Дайвер Дайвер 11 июня 2012 в 11:30

Здравствуйте Товарищи !

Не могу решить вроде бы тривиальный задачу !

Имеем: Drupal 7
Необходимо в админке модуля указать путь к текстовому файлу (загружать никуда не надо !), который потом будет парситься в самом модуле. Указывать желательно через кнопку - вызов проводника. Написал такую конструкцию:

<?php
function quote_admin_settings() {
    
$form['q_path'] = array(
        
'#type' => 'file',
        
'#title' => 'Файл цитат',
        
'#size' => 100,
        
'#description' => 'Выберите текстовый файл',
        
'#default_value' => variable_get('q_path'),
    );

    

$form['submit'] = array(
        
'#type' => 'submit',
        
'#value' => t('Сохранить'),
    );
    
    
$form['run_cron'] = array(
        
'#type' => 'submit',
        
'#value' => t('Запустить Крон'),
    );  

    return 

$form;
}

function 

quote_admin_settings_submit($form, &$form_state) {

    

variable_set('quote_path'$form_state['values']['q_path']);

    if (

$form_state['values']['op'] == t('Запустить Крон')) {
        
$form_state['redirect'] = 'admin/reports/status/run-cron';
    }
    else {
        
drupal_set_message(t('Настройки сохранены'));
    }
}

function 

theme_quote_admin_settings($form) { 
    return 
variable_get('quote_path');
}
?>

Вроде бы после нажатия на субмит в quote_path должен содержаться путь, или хотя бы имя файла, но его там нет, хоть убей, просто пустая строка !
И не могу подходящего примера нигде найти, может плохо искал, не знаю, голова уже не варит.

Уже замучился, помогите пожалуйста !

Комментарии

Аватар пользователя Дайвер Дайвер 11 июня 2012 в 12:39

"orion76" wrote:
А что содержитьтся в $form_state['values']['q_path']? в функции сабмита..

ничего не содержится, выводит пустую строку.

xxandeadxx за ссылку спасибо, разбираюсь, но пока того что нужно найти не могу там.

Аватар пользователя Дайвер Дайвер 11 июня 2012 в 12:48

Интересно что если использовать textfield то все отлично работает, но textfield не очень устраивает - бить в ручную полностью путь к файлу согласитесь не очень удобно.

Мне бы кусочек кода где решен вопрос, неужели никто не сталкивался...

Аватар пользователя Orion76 Orion76 11 июня 2012 в 17:52

"Дайвер" wrote:
Мне бы кусочек кода где решен вопрос

Все очень просто-))
Вспоминаем, где в друпале имеется форма загрузки файла..
Например загрузка логотипа для темы:
модуль system
файл system.admin.inc
функции
system_theme_settings
system_theme_settings_submit

Аватар пользователя Дайвер Дайвер 11 июня 2012 в 22:45

"orion76" wrote:
Все очень просто-))
Вспоминаем, где в друпале имеется форма загрузки файла..
Например загрузка логотипа для темы:
модуль system
файл system.admin.inc
функции
system_theme_settings
system_theme_settings_submit

Спасибо Орион, но там тоже через аплоад сделано. Похоже RxB прав, по другому никак...

В общем через аплоад получилось, но конечно не совсем так как хотелось...

Однако Я не понимаю зачем такой гемморой, по логике $form_state['values']['file'] просто должна возвращать путь к фалу, может конечно у разработчиков были свои причины, но как-то коряво у них получилось, имхо.

Всем спасибо за помощь Мужики.