передача переменных элементам формы

Главные вкладки

Аватар пользователя airam airam 24 декабря 2008 в 9:18
<?
function search_menu() {
$items['key_search'] = array(
        'title' => t('Поиск'),
        'page callback' => 'search',
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function search($sword=''){
        $output= drupal_get_form ('ats_search_form',$sword);
        return $output;
}

//обработка нажатия клавиши
function ats_search_form_submit($form, &$form_state) {
        $name = $form_state['values']['search_word'];
        $form_state['redirect'] = $base_path.'key_search/'.$name;
}

// форма поиска
function ats_search_form($context, $word) {
        $form['search_word'] = array(
        '#value' => $word,
        '#type' => 'textfield',
        '#description' => t('Введите ключевое слово для поиска.'),
        );
        $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('найти')
);

в результате выполнения модуля страница поиска должна была переадресовывать на саму себя с передачей параметра из текстового поля. Полученный параметр заново отображать в текстовом поле..
но в итоге она при смете значения текстового поля продолжает переадресовывать по старому значению..
что надо подправить?

Комментарии

Аватар пользователя glu2006 glu2006 24 декабря 2008 в 10:13

В функцию t() нельзя писать русские буквы НЕЛЬЗЯ!!!!!!!
Рекомендации изучать основы php с самого начала.
смотреть на код модулей которые вы ставите, поверьте модули пишут не только англичане и америкосы, но вы нигде не найдете в коде модулей польского, чешского, немецкого языка, так чем же русский лучше?

Аватар пользователя airam airam 24 декабря 2008 в 10:25

В функцию t() нельзя писать русские буквы НЕЛЬЗЯ!!!!!!!

- сначала я хотел бы написать работоспособный код а потом уже заняться нормальным переводом интерфейса на английский и созданием файла руссификации..

Аватар пользователя glu2006 glu2006 24 декабря 2008 в 11:11

airam wrote:
В функцию t() нельзя писать русские буквы НЕЛЬЗЯ!!!!!!!

- сначала я хотел бы написать работоспособный код а потом уже заняться нормальным переводом интерфейса на английский и созданием файла руссификации..

Да бл... сколько можно объяснять основы программирования, вы же не называете переменные $василий так вот то что вы вписываете в кавычках в функцию t() это параметр!!!!!! пусть строковый но параметр.

он принимается к обработке другими функциями он должен быть написан хотя бы ЛАТИНИЦЕЙ но никак не русскими буквами. Окуда взяться работоспособному коду если вы его заблаговременно пишите ошибочно.
прежде чем писать и пользоваться посмотрите на код который выполняет функция t() и поймите принцип ее работы.

Аватар пользователя airam airam 24 декабря 2008 в 11:48

я знаю ее принцип.. не убираю я t() что бы потом легче находить строки для перевода..
это не критичная ошибка.. и никак не сказывается на результате частного кода..
но если это вызывает такой спор - я его переписал..

<?
function search_menu() {
$items['key_search'] = array(
        'title' => 'Поиск',
        'page callback' => 'search',
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function search($sword=''){
        $output=drupal_get_form ('ats_search_form',$sword);
        return $output;
}
 
//обработка нажатия клавиши
function ats_search_form_submit($form, &$form_state) {
        $name = $form_state['values']['search_word'];
        $form_state['redirect'] = $base_path.'key_search/'.$name;
}
 
// форма поиска
function ats_search_form($context, $word) {
        $form['search_word'] = array(
        '#value' => $word,
        '#type' => 'textfield',
        '#description' => 'Введите ключевое слово для поиска.',
        );
        $form['submit'] = array(
        '#type' => 'submit',
        '#value' => 'найти'
);

как простым способом без написания тысячи строк присвоить текстовому полю значение но так что бы его можно было потом изменить и обработать после изменения?

Аватар пользователя glu2006 glu2006 24 декабря 2008 в 11:56
$form_state['redirect'] = $base_path.'key_search/'.$name;

Вот тут вот что-то не так. Может так попробуйте:

$form_state['redirect'] = $base_path.'key_search?'.$name;