2009-05-08 8 views
1

Im obtenir l'erreur T_String sur ce code, son dire plus précisément sur la deuxième ligne ($ form ['com ...) et je ne vois tout simplement pas pourquoi.Impossible de trouver l'erreur dans ce morceau de code Php

function _maxlength_comment_type_form_alter(&$form, $form_state, $form_id) { 
    $form['comment']['comment_max_length'] = array(
    '#type' => 'select', 
    '#title' => t('Maximum comment length'), 
    '#default_value' => variable_get('comment_max_length_'. $form['#node_type'] -> type, 160), 
    '#options'=> drupal_map_assoc(array(140,160,180,200)), 
    '#description' => t('numero maximo de caracteres permitidos.'), 
    '#weight' => -1, 
    ); 

En ajoutant ce code au module Drupal Maxlength.

+0

Ce que vous avez écrit est du code PHP syntaxiquement correct. Cela fonctionne pour moi sans une erreur de syntaxe dans PHP4 et PHP5 si je l'enveloppe avec pts

Répondre

1

Il pourrait être cette partie:

'comment_max_length_'. $form['#node_type'] -> type 

Essayez de se débarrasser des espaces autour de la flèche?


Edit - Je ne crois pas que ce qui précède est en fait un problème avec le code, bien que je vous recommande encore enlever les espaces comme une question de style, il est donc tout simplement évident que vous faites cela :

'comment_max_length_'. ($form['#node_type']->type) 

plutôt que ceci:

('comment_max_length_' . $form['#node_type']) 

Votre code est valide et fonctionne sur mon PC TM.


Une autre édition:

Assurez-vous que $form['comment'] a été défini ainsi. Peut-être ajouter ceci au début de la fonction.

if (!isset($form['comment'])) $form['comment'] = array(); 
+0

Merci pour les conseils de syntaxe les gars, je continue d'apprendre php (noobie) donc je probly faire beaucoup d'erreurs de ce type. Btw j'ai trouvé le problème, c'était dans une fonction juste après celle que j'ai posté. J'ai encore besoin de mieux lire les erreurs d'analyse. Ils acuse une ligne mais l'erreur est en réalité dans une autre? – Fabio

+0

oui, souvent le problème sera sur la ligne avant ou après la ligne qu'il dit. – nickf

0

Deux problèmes que je peux voir, celui nickf ci-dessus, fait allusion à dire que vous ne devriez pas avoir un espace de chaque côté de la flèche:

'comment_max_length_'. $form['#node_type'] -> type 

De plus, cela ne devrait pas avoir une virgule après (comme il est le dernier élément du tableau):

'#weight' => -1,` 
+0

Ce n'est pas réellement une erreur de syntaxe. C'est un style pauvre, IMO, mais c'est toujours valide PHP. – nickf

+1

La virgule supplémentaire n'a pas d'importance. J'ajoute habituellement cette virgule supplémentaire dans mon code. De cette façon, lorsque j'ajouterai plus d'entrées au tableau, je n'oublie pas d'ajouter la virgule supplémentaire. De plus, mes diffs seront plus petits. –

+0

Ce n'est généralement pas un problème, mais IIRC (n'hésitez pas à me corriger si je me trompe), certaines implémentations PHP plus anciennes font des erreurs sur la virgule supplémentaire. Peut-être que je suis juste en train de rêver, bien que :) –

0

que diriez-vous casser cette déclaration énorme en plus petits afin que vous puissiez identifier le problème mieux?

+0

Cela a beaucoup aidé, j'ai pris fonction par fonction pour que je puisse trouver où l'erreur était à – Fabio

Questions connexes