trim() expects parameter 1 to be string, array given in ...

Events happening in the community are now at Drupal community events on www.drupal.org.
miccelito's picture

Använder PHP 5.3.17

Använder en SEO modul som knasar och var gång en nod sparas visas felmeddelandet
trim() expects parameter 1 to be string, array given in ...
refererande till raderna

if (! empty($tag_value)) {
$tag_value = trim($tag_value);

i nedanstående kod

function seo_friend_text_validate($form, &$form_state, $type, $module) {
  $type = seo_friend_get_override_type($module, $type);
  $tags = seo_friend_get_tags($module);
  if (! empty($tags)) {
    foreach ($tags as $tag) {
      if ($module == 'nodewords') {
        $tag_value = $form_state['values']['nodewords'][$tag]['value'];
        if (! empty($tag_value)) {
          $tag_value = trim($tag_value);
        }
        $fieldset = 'nodewords';
      }
      else {
        $tag_value = trim($form_state['values'][$tag]);
        $fieldset = null;
      }

Någon med goda php kunskaper som kan se vad som eventuellt är fel med nämnda raderna Har sökt svar på drupal.org men ännu inte hittat någon lösning.

Comments

Testa att installera modulen

pontus_nilsson's picture

Testa att installera modulen Devel och sedan lägga till en

dpm($form_state['values']['nodewords'][$tag]['value']);
innan trim() körs så vet du varför den kommer in som en array istället för som en förväntad sträng.

Kan det vara som så att Nodewords har ändrat på datan i formuläret så att det du skrivit in inte längre ligger i $form_state['values']['nodewords'][$tag]['value'], utan finns på en annan "sökväg" i arrayen?

Testa att i ovan dpm gå tillbaka i arrayen, dvs, dpm($form_state['values']['nodewords']; och titta sedan om värdet du skrivit in per tagg ligger någon annanstans.

//Pontus Nilsson, Digitalist

Testade installera Devel och

miccelito's picture

Testade installera Devel och lägga till dpm($form_state['values']['nodewords'][$tag]['value']); och sedan spara om en nod. Vet inte om jag blev så mycket klokare av det, men iaf visas då ifylld textdata från aktuellt formulär samt visas också (krumo) meddelande:

... (Array, 8 elements)
index (Integer) 0
noindex (Integer) 0
follow (Integer) 0
nofollow (Integer) 0
noarchive (Integer) 0
noodp (Integer) 0
nosnippet (Integer) 0
noydir (Integer) 0

Problemet nu fixat. Nodewords

miccelito's picture

Problemet nu fixat. Nodewords hade tydligen ändrat en hel del på datan i formuläret. if (! empty($tag_value)) { ändrat till if (! empty($tag_value) && is_string($tag_value)) { osv