Мне не удалось заставить drupal_get_form передать данные узла. Фрагменты кода приведены ниже. В документации drupal_get_form (api.drupal.org) указано, что он будет передавать дополнительные параметры. Я основываюсь на том, что данные узла не передаются, потому что (очевидно) $node['language'] не определен вook_form, что приводит к тому, что $form['qqq'] не создается и, таким образом, появляется кнопка предварительного просмотра.
Моя цель состоит в том, чтобы кнопка предварительного просмотра отображалась с использованием пути «node/add/author», но не отображалась для «milan/author/add». Любые альтернативные методы достижения этой цели были бы полезны, но вопрос, на который я хочу получить ответ, находится в предыдущем абзаце. Все, что я прочитал, указывает на то, что это должно работать.
Этот пункт меню
$items ['milan/author/add'] = array(
'title' => 'Добавить автора',
'обратный вызов страницы' => 'get_author_form',
'аргументы доступа' => array('доступ к содержимому'),
'file' => 'author.pages.inc',
);
вызывает этот код
function get_author_form() {
//возвращаем node_form(NULL,NULL);
//возвращаем drupal_get_form( 'author_form');
returnauthor_ajax_form('author');
}
functionauthor_ajax_form($type) {
global $user;
Module_load_include ('inc', 'node', 'node.pages');
$types = node_get_types();
$type = isset($type) ? str_replace('-', '_', $type) : NULL;
// Если указан тип узла, проверяем его существование.
if (isset($types[$type]) && node_access('create', $type)) {
// Инициализируем настройки:
$node = array('uid' => $user->uid, 'name' => (isset($user ->name) ? $user->name : ''), 'type' => $type, 'language' => 'bbb','bbb' => 'TRUE');
$output = drupal_get_form ($type .'_node_form', $node);
вернуть $output;
}
А вот кодook_form иook_form_alter
functionauthor_form_author_node_form_alter(&$form, &$form_state) {
$form[' автор']=NULL;
$form['taxonomy']=NULL;
$form['options']=NULL;
$form['menu']=NULL;
$form['comment_settings']=NULL;
$form['files']=NULL;
$form['revision_information']=NULL;
$form['attachments' ]=NULL;
if($form["qqq"]) {
$form['buttons']['preview']=NULL;
}
functionauthor_form(&$node) {
return make_author_form(&$node);
function make_author_form(&$node) {
global $user;
$type = node_get_types('type', $node);
$node =author_make_title($node);
drupal_set_breadcrumb(array (l(t('Home'), NULL), l(t($node->title), 'node/' . $node->nid)));
$form['authorset'] = array(
'#type' => 'fieldset',
' #title' => t('Автор'),
'#weight' => -50,
'#collapsible' => FALSE,
'#collapsed' => FALSE, );
$form['author_id'] = array(
'#access' => user_access('создать записи pd_recluse'),
'#type' => 'скрытый',
'#default_value' => $node->author_id,
'#weight' => -20
);
$form['authorset']['last_name'] = array(
'#type' => 'textfield',
'#title' => t('Фамилия '),
'#maxlength' => 60,
'#default_value' => $node->last_name
);
$form['authorset' ]['first_name'] = array(
'#type' => 'textfield',
'#title' => t('Имя'),
'#maxlength' = > 60,
'#default_value' => $node->first_name
);
$form['authorset']['middle_name'] = array(
'#type' => 'textfield',
'#title' => t('Отчество'),
'#maxlength' => 60,
'#default_value' = > $node->middle_name
);
$form['authorset']['suffix_name'] = array(
'#type' => 'textfield', '#title' => t('Суффикс имени'),
'#maxlength' => 14,
'#default_value' => $node->suffix_name
);
$form['authorset']['body_filter']['body'] = array(
'#access' => user_access('создать записи pd_recluse'),
'#type' => 'textarea',
'#title' => 'Описать автора',
'#default_value' => $node->body,
'#required' => FALSE,
'#weight' => -19
);
$form['status'] = array(
'# type' => 'скрытый',
'#default_value' => '1'
);
$form['promote'] = array(
' #type' => 'скрытый',
'#default_value' => '1'
);
$form['name'] = array(
'#type' => 'скрытый',
'#default_value' => $user->name
);
$form['format'] = array( '#type' => 'hidden',
'#default_value' => '1'
);
// ПРИМЕЧАНИЕ в node_example есть не нужен ли какой-то дополнительный код для этого простого типа узла
$thepath='milan/author';
if($_REQUEST["theletter"]) {
$thepath .= " /" . $_REQUEST["theletter"];
if($node['language']) {
$thepath='milan/authorajaxclose';
$ form['qqq'] = array(
'#type' => 'скрытый',
'#default_value' => '1'
);
$form['#redirect'] = $thepath;
return $form;
}
Этот путь меню совпадает с этой темой (PHPTemplate)
Подробнее здесь: https://stackoverflow.com/questions/282 ... node-array
Drupal_get_form не передает массив узлов ⇐ Php
Кемеровские программисты php общаются здесь
1729554501
Anonymous
Мне не удалось заставить drupal_get_form передать данные узла. Фрагменты кода приведены ниже. В документации drupal_get_form (api.drupal.org) указано, что он будет передавать дополнительные параметры. Я основываюсь на том, что данные узла не передаются, потому что (очевидно) $node['language'] не определен вook_form, что приводит к тому, что $form['qqq'] не создается и, таким образом, появляется кнопка предварительного просмотра.
Моя цель состоит в том, чтобы кнопка предварительного просмотра отображалась с использованием пути «node/add/author», но не отображалась для «milan/author/add». Любые альтернативные методы достижения этой цели были бы полезны, но вопрос, на который я хочу получить ответ, находится в предыдущем абзаце. Все, что я прочитал, указывает на то, что это должно работать.
Этот пункт меню
$items ['milan/author/add'] = array(
'title' => 'Добавить автора',
'обратный вызов страницы' => 'get_author_form',
'аргументы доступа' => array('доступ к содержимому'),
'file' => 'author.pages.inc',
);
вызывает этот код
function get_author_form() {
//возвращаем node_form(NULL,NULL);
//возвращаем drupal_get_form( 'author_form');
returnauthor_ajax_form('author');
}
functionauthor_ajax_form($type) {
global $user;
Module_load_include ('inc', 'node', 'node.pages');
$types = node_get_types();
$type = isset($type) ? str_replace('-', '_', $type) : NULL;
// Если указан тип узла, проверяем его существование.
if (isset($types[$type]) && node_access('create', $type)) {
// Инициализируем настройки:
$node = array('uid' => $user->uid, 'name' => (isset($user ->name) ? $user->name : ''), 'type' => $type, 'language' => 'bbb','bbb' => 'TRUE');
$output = drupal_get_form ($type .'_node_form', $node);
вернуть $output;
}
А вот кодook_form иook_form_alter
functionauthor_form_author_node_form_alter(&$form, &$form_state) {
$form[' автор']=NULL;
$form['taxonomy']=NULL;
$form['options']=NULL;
$form['menu']=NULL;
$form['comment_settings']=NULL;
$form['files']=NULL;
$form['revision_information']=NULL;
$form['attachments' ]=NULL;
if($form["qqq"]) {
$form['buttons']['preview']=NULL;
}
functionauthor_form(&$node) {
return make_author_form(&$node);
function make_author_form(&$node) {
global $user;
$type = node_get_types('type', $node);
$node =author_make_title($node);
drupal_set_breadcrumb(array (l(t('Home'), NULL), l(t($node->title), 'node/' . $node->nid)));
$form['authorset'] = array(
'#type' => 'fieldset',
' #title' => t('Автор'),
'#weight' => -50,
'#collapsible' => FALSE,
'#collapsed' => FALSE, );
$form['author_id'] = array(
'#access' => user_access('создать записи pd_recluse'),
'#type' => 'скрытый',
'#default_value' => $node->author_id,
'#weight' => -20
);
$form['authorset']['last_name'] = array(
'#type' => 'textfield',
'#title' => t('Фамилия '),
'#maxlength' => 60,
'#default_value' => $node->last_name
);
$form['authorset' ]['first_name'] = array(
'#type' => 'textfield',
'#title' => t('Имя'),
'#maxlength' = > 60,
'#default_value' => $node->first_name
);
$form['authorset']['middle_name'] = array(
'#type' => 'textfield',
'#title' => t('Отчество'),
'#maxlength' => 60,
'#default_value' = > $node->middle_name
);
$form['authorset']['suffix_name'] = array(
'#type' => 'textfield', '#title' => t('Суффикс имени'),
'#maxlength' => 14,
'#default_value' => $node->suffix_name
);
$form['authorset']['body_filter']['body'] = array(
'#access' => user_access('создать записи pd_recluse'),
'#type' => 'textarea',
'#title' => 'Описать автора',
'#default_value' => $node->body,
'#required' => FALSE,
'#weight' => -19
);
$form['status'] = array(
'# type' => 'скрытый',
'#default_value' => '1'
);
$form['promote'] = array(
' #type' => 'скрытый',
'#default_value' => '1'
);
$form['name'] = array(
'#type' => 'скрытый',
'#default_value' => $user->name
);
$form['format'] = array( '#type' => 'hidden',
'#default_value' => '1'
);
// ПРИМЕЧАНИЕ в node_example есть не нужен ли какой-то дополнительный код для этого простого типа узла
$thepath='milan/author';
if($_REQUEST["theletter"]) {
$thepath .= " /" . $_REQUEST["theletter"];
if($node['language']) {
$thepath='milan/authorajaxclose';
$ form['qqq'] = array(
'#type' => 'скрытый',
'#default_value' => '1'
);
$form['#redirect'] = $thepath;
return $form;
}
Этот путь меню совпадает с этой темой (PHPTemplate)
Подробнее здесь: [url]https://stackoverflow.com/questions/2822097/drupal-get-form-is-not-passing-along-node-array[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия