Необходимо создать кастомный тип формы, подобный стандартному “tableselect”. Разница между стандартным “tableselect” и новым типом, заключается в том, что вместо первой колонки с чекбоксами у нас в последней колонке должны выводится подряд три инпута.
- Создать кастомный модуль, расширяющий стандартный набор Form API.
- Вывести таблицу, содержащую набор полей с возможностью ввода информации о количестве элементов в последней колонке.
- Предусмотреть валидацию вводимых данных.
- Идентификатором строки, должнен выступать node id.
- Значение из полей необходимо записывать в созданный филд ноды.
Вот само задание
В этом деле начинающий, подтолкните в правильном направлении пожалуйста. Я так понимаю надо добавить инпут в форму, а в базу добавить через db_insert. Но как правильно? Вот что сделал:
<?php
//Menu
function advinfo_menu(){
$items['advinfo'] = array(
'title'=> t('Advanced Info'),
'page callback' => 'nodelist_form',
'access callback' => 'user_access',
'access arguments' => array('access content'),
'expanded' => TRUE
);
// Элемент ведущий к списку пользователей
$items['advinfo/nodeslist'] = array(
'title' => t('Nodes list'),
'description' => t('List of nodes'),
'page callback' => 'nodelist_form',
'access callabck' => 'user_access',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM
);
return $items;
}
function
nodelist_form(){
$perpage = 10;
// HEADER TABLE
$header = array(
array('data'=> 'Заголовок', 'field'=> 'title'),
array('data'=> 'Создано', 'field'=> 'created'),
array('data'=> 'Тип', 'field'=> 'type'),
array('data'=>'NID', 'filed'=>'nid'),
array('data'=>'Статус', 'field'=>'status'),
array('data'=>'Комментарий', 'field'=>'comment')
);
// Запрос к БД о материале
$nodes = db_select('node','n')
->fields('n', array('title', 'created', 'type', 'nid', 'status'))
->extend('PagerDefault')
->limit(10)
->extend('TableSort')
->OrderByHeader($header)
->execute();
global
$base_url;
$rows = array();
//создаем массив который выведим в таблицу после шапки
foreach ($nodes as $node)
{
$rows[]=array(
l($node->title, $base_url."/node/".$node->nid), // Ссылка на конкретную ноду
format_date($node->created), // дата публикации
$node->type, //тип
$node->nid, //номер ноды
$node->status, //status
$rows[] ='<form action="" method="post"> Item1: <input type="text" name="item1" size="5"><input type="submit" value="Save"></form>',
);
//$item = array($_POST['item1']);
}
$output = theme('table', array('header'=>$header, 'rows'=>$rows));
$output.= theme('pager'); // навигация по результатам
return $output;
}
?>