не отображается страница с добавленными элементами

27 октября 2016 в 15:20
Аватар пользователя gizi gizi 0 15 Решено

При добавлении новых элементов в форму, появляется страница с записью 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;
}

31 октября 2016 в 20:50

Пардон

$items['artwork/add'] = array(
'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,
);

для каждого прописываю коллбэки,все как в книге,но почему не работает

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;
}

31 октября 2016 в 21:04

gizi wrote:

появляется страница с записью save

Чего появляется, где?
gizi wrote:

далее на этой стр отображается page not found
НА какой на этой?

Вы уже научитесь доступно писать, тут телепатов нет.

1 ноября 2016 в 8:24

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

1 ноября 2016 в 20:24

Короче все равно не ясно, мы тут специфику сайта не видим. Зашлите мне в личку свой скайп - как будет время стукну, Тут у вас какая-то мелочь, посмотрим, подумаем.
Вы тут описываете частности, но общая задумка ускользает - поэтому и непонятно, судя по всему.

1 ноября 2016 в 23:20

У вас в экшенах формы стоит переадресация на artwork/%artwork? Страница artwork/%artwork отображается? Что в её коллбэках?

1 ноября 2016 в 21:27