Пишу модуль. В нем есть форма. Пр попытке сабмита пишет.
Fatal error: Cannot use string offset as an array in D:\web\xampplite\htdocs\veloplaneta\includes\form.inc on line 992
В чем ошибка не пойму Гляньте плиз свежим взглядом.
/**
* Hook menu
*/
function catalog_seo_menu(){
$items = array();
$items['admin/catalog_seo'] = array(
'title' => 'Catalog seo',
'page callback' => 'catalog_seo_listing',
'page arguments' => array(),
'access arguments' => array('administer nodes'),
'type' => MENU_NORMAL_ITEM
);
$items['admin/catalog_seo/%/edit'] = array(
'title' => 'Catalog seo',
'page callback' => 'catalog_seo_edit',
'page arguments' => Array
(
2
),
'access arguments' => array('administer nodes'),
'type' => MENU_CALLBACKz
);
$items['admin/catalog_seo/add_url'] = array(
'title' => 'Catalog seo',
'page callback' => 'catalog_seo_addurl',
'access arguments' => array('administer nodes'),
'type' => MENU_CALLBACKz
);
return $items;
}
/**
* theme
*/
function catalog_seo_theme(){
return array('catalog_seo_listing' => array('arguments' => array('listing'=> NULL),
'path' => drupal_get_path('module','catalog_seo').'/templates',
'template' => 'catalog_seo_listing'));
}
/**
* catalog listing
*/
function catalog_seo_listing(){
$result = pager_query("SELECT * FROM {catalog_seo}",20,0,"SELECT count(*) FROM {catalog_seo}");
$listing_rows = array();
while($row = db_fetch_object($result)){
$listing_rows[]=$row;
}
return theme('catalog_seo_listing',$listing_rows).theme('pager', NULL, 20, 0);;
}
/**
* catalog seo edit
*/
function catalog_seo_edit($row_id){
$result = db_query("SELECT * FROM {catalog_seo} WHERE id=%n",$row_id);
$row = db_fetch_object($result);
return drupal_get_form('catalog_seo_edit_form',$row);
}
function catalog_seo_edit_form(&$form_state,$row){
$form['url'] = array(
'#title'=>'Url',
'#type'=>'textfield',
'#value'=> $row->url
);
$form['id'] = array(
'#type'=>'hidden',
'#value'=> $row->id
);
$form['keywords_text'] = array(
'#title'=>'Keywords',
'#type'=>'textarea',
'#value'=> $row->keywords
);
$form['description_text'] = array(
'#title'=>'Description',
'#type'=>'textarea',
'#value'=> $row->description
);
$form['seotext'] = array(
'#title'=>'Seo text',
'#type'=>'textarea',
'#value'=> $row->seotext
);
$form['submit'] = array(
'#type'=>'submit',
'#value'=>'Отправить'
);
return $form;
}
function catalog_seo_edit_form_submit($form,&$form_state){
$rows = $form_state['values'];
db_query("UPDATE {catalog_seo} SET keywords='%s', description='%s', seotext='%s' WHERE id=%d",strip_tags($rows['keywords_text']),strip_tags($rows['description_text']),strip_tags($rows['seotext']),$rows['id']);
// db_query("UPDATE {catalog_seo} SET keywords='".strip_tags($rows['keywords_text'])."', description='".strip_tags($rows['description_text'])."', seotext='".strip_tags($rows['seotext'])."' WHERE id=".$rows['id']);
}
Комментарии
catalog_seo_edit_form(&$form_state, $row)
спасибо огромное. подскажите пожалуйста еще.
теперь не делаеться сабмит формы. функция сабмита выглядит вот так. ошибок не пишет
$rows = $form_state['values'];
db_query("UPDATE {catalog_seo} SET keywords='".strip_tags($rows['keywords_text'])."', description='".strip_tags($rows['description_text'])."', seotext='".strip_tags($rows['seotext'])."' WHERE id=".$rows['id']);
}
может я забыл какой-то редирект или что-то такое?
а где id в форме?
ай ди я добавил. но проблема не в этом. запрос вроде правильный.
Тоже самое с добавлением
* add form
*/
function catalog_seo_addurl(){
return drupal_get_form('catalog_seo_addurl_form');
}
function catalog_seo_addurl_form(&$form_state){
$form['url'] = array(
'#title'=>'Url',
'#type'=>'textfield',
);
$form['keywords_text'] = array(
'#title'=>'Keywords',
'#type'=>'textarea',
);
$form['description_text'] = array(
'#title'=>'Description',
'#type'=>'textarea',
);
$form['seotext'] = array(
'#title'=>'Seo text',
'#type'=>'textarea',
);
$form['submit'] = array(
'#type'=>'submit',
'#value'=>'Отправить'
);
return $form;
}
function catalog_seo_addurl_submit($form,&$form_state){
$form_state['redirect'] = 'admin/catalog_seo';
$rows = $form_state['values'];
db_query("INSERT INTO {catalog_seo} SET keywords='%s', description='%s', seotext='%s'",strip_tags($rows['keywords_text']),strip_tags($rows['description_text']),strip_tags($rows['seotext']),$rows['id']);
}