При добавлении новых элементов в форму, появляется страница с записью save(в бд элементы тож добавляются),но далее на этой стр отображается page not found и эти добавленные + старые элементы не отображаются,хотя должны.Как решить эту проблему в 7 друпале?или где можно почерпнуть эту информацию?
Комментарии
Каким образом? Вручную в модуле?
да вручную,написала более подробно свою проблемку
да,вручную,заполнение полей формы типа фио, почта,но я добавляю элементы(названия картин) и должен появиться список из старых картин и новых,а вместо этого not found.Вообще я пытаюсь написать модуль по книге Drupal 7 Module Development следующих авторов:Matt Butcher
Greg Dunlap
Matt Farina
Larry Garfield
Ken Rickard
John Albin Wilkins(по подобию главы 6)
те изначально в хук меню добавляю итемы с ссылками
$items['artwork/add'] = array(
'title' => 'Add new artwork',
'page callback' => 'artwork_add_page',
'access arguments' => array('create artworks'),
'weight' => 1,
'menu_name' => 'management',
'file' => 'artwork.controller.inc',
);
foreach (artwork_types() as $type) {
$type_url_str = str_replace('_', '-', $type->type);
$items['artwork/add/' . $type_url_str] = array(
'title' => $type->name,
'title callback' => 'check_plain',
'page callback' => 'artwork_add',
'page arguments' => array(2),
'access arguments' => array('create artwork'),
'description' => $type->description,
);
}
$items['artwork/%artwork'] = array(
'title callback' => 'artwork_page_title',
'title arguments' => array(1),
'page callback' => 'artwork_page_view',
'page arguments' => array(1),
'access arguments' => array('view artworks'),
'type' => MENU_CALLBACK,
);
$items['artwork/%artwork/view'] = array(
'title' => 'View',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
для каждого прописываю коллбэки,все как в книге,но почему не работает
function artwork_add_page() {
$item = menu_get_item();
$links = system_admin_menu_block($item);
foreach ($links as $link) {
$items[] = l($link['title'], $link['href'],
$item['localized_options'])
. ': ' . filter_xss_admin($link['description']);
}
return theme('item_list', array('items' => $items));
}
function artwork_add($type) {
global $user;
$types = artwork_types();
$type = isset($type) ? str_replace('-', '_', $type) : NULL;
if (empty($types[$type])) {
return MENU_NOT_FOUND;
}
$artwork = entity_get_controller('artwork')->create($type);
drupal_set_title(t('Create @Name', array('@Name' =>
$types[$type]->name)), PASS_THROUGH);
return drupal_get_form($type . '_artwork_form', $artwork);
}
unction artwork_page_view($artwork, $view_mode = 'full') {
// Remove previously built content, if exists.
$artwork->content = array();
if ($view_mode == 'teaser') {
$artwork->content['title'] = array(
'#markup' => filter_xss($artwork->title),
'#weight' => -5,
);
}
// Build fields content.
field_attach_prepare_view('artwork',
array($artwork->aid => $artwork),
$view_mode);
entity_prepare_view('artwork', array($artwork->aid => $artwork));
$artwork->content += field_attach_view('artwork', $artwork,
$view_mode);
return $artwork->content;
}
всю голову сломала...помогите,спасите,тону в этих джунглях )))
Оборачивайте код в тег
<code>
Пардон
'title' => 'Add
ew artwork',
'page callback' => 'artwork_add_page',
'access arguments' => array('create artworks'),
'weight' => 1,
'menu_name' => 'management',
'file' => 'artwork.controller.inc',
);
foreach (artwork_types() as $type) {
$type_url_str = str_replace('_', '-', $type->type);
$items['artwork/add/' . $type_url_str] = array(
'title' => $type->name,
'title callback' => 'check_plain',
'page callback' => 'artwork_add',
'page arguments' => array(2),
'access arguments' => array('create artwork'),
'description' => $type->description,
);
}
$items['artwork/%artwork'] = array(
'title callback' => 'artwork_page_title',
'title arguments' => array(1),
'page callback' => 'artwork_page_view',
'page arguments' => array(1),
'access arguments' => array('view artworks'),
'type' => MENU_CALLBACK,
);
$items['artwork/%artwork/view'] = array(
'title' => 'View',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
для каждого прописываю коллбэки,все как в книге,но почему не работает
$item = menu_get_item();
$links = system_admin_menu_block($item);
foreach ($links as $link) {
$items[] = l($link['title'], $link['href'],
$item['localized_options'])
. ': ' . filter_xss_admin($link['description']);
}
return theme('item_list', array('items' => $items));
}
function artwork_add($type) {
global $user;
$types = artwork_types();
$type = isset($type) ? str_replace('-', '_', $type) : NULL;
if (empty($types[$type])) {
return MENU_NOT_FOUND;
}
$artwork = entity_get_controller('artwork')->create($type);
drupal_set_title(t('Create @Name', array('@Name' =>
$types[$type]->name)), PASS_THROUGH);
return drupal_get_form($type . '_artwork_form', $artwork);
}
unction artwork_page_view($artwork, $view_mode = 'full') {
// Remove previously built content, if exists.
$artwork->content = array();
if ($view_mode == 'teaser') {
$artwork->content['title'] = array(
'#markup' => filter_xss($artwork->title),
'#weight' => -5,
);
}
// Build fields content.
field_attach_prepare_view('artwork',
array($artwork->aid => $artwork),
$view_mode);
entity_prepare_view('artwork', array($artwork->aid => $artwork));
$artwork->content += field_attach_view('artwork', $artwork,
$view_mode);
return $artwork->content;
}
Чего появляется, где? НА какой на этой?
Вы уже научитесь доступно писать, тут телепатов нет.
буду исправляться,есть страница с формой для ввода названия картин,при нажатии добавить,новые картины добавляются,эта страница сменяется страницей нот фоунд, где сверху выскакивает подсказка,что картины сохранены,но вместо нот фоунд должны быть отображены названия картин
Но это нода хотя бы?
Короче все равно не ясно, мы тут специфику сайта не видим. Зашлите мне в личку свой скайп - как будет время стукну, Тут у вас какая-то мелочь, посмотрим, подумаем.
Вы тут описываете частности, но общая задумка ускользает - поэтому и непонятно, судя по всему.
После добавления hook_menu надо кэш чистить.
пробовала,не в этом проблема,видимо
У вас в экшенах формы стоит переадресация на artwork/%artwork? Страница artwork/%artwork отображается? Что в её коллбэках?
Всем спасибо!)) Проблема решена)))