2011-02-08 2 views
6
<? switch($data['type']) : ?> 
<? case 'log': ?> 

    <? while ($row = $data['loop']->fetch()) : ?> 
     <table class="t-errors"> 
      <tr> 
       <td> 
        <b>IP:</b> <? echo $row['LogShellIP']; ?> 
        <b>Command:</b> <? echo $row['LogShellCommand']; ?> 
        <b>Executed:</b> <? echo $row['LogShellReturn']; ?> 
        <b>Time:</b> <? echo format::time($row['LogShellTime']); ?> 
       </td> 
      </tr> 
     </table> 
    <? endwhile; ?> 

<? break; ?> 

<? case 'fatal': ?> 
<? case 'warning': ?> 
<? case 'notice': ?> 
<? case 'unknown': ?> 

    <? while ($row = $data['loop']->fetch()) : ?> 
     <table class="t-errors"> 
      <tr> 
       <td <? if ($row['LogErrorSeen'] == 0) { echo 'class="e-selected"'; } ?>> 
        <b>String:</b> <? echo $row['LogErrorString']; ?> 
        <b>File:</b> <? echo $row['LogErrorFile']; ?> 
        <b>Line:</b> <? echo $row['LogErrorLine']; ?> 
        <b>Context:</b> <? echo $row['LogErrorContext']; ?> 
        <b>Ip:</b> <? echo $row['LogErrorIP']; ?> 
        <b>Time:</b> <? echo format::time($row['LogErrorTime']); ?> 
       </td> 
      </tr> 
     </table> 
    <? endwhile; ?> 

<? break; ?> 
<? endswitch; ?>      

sto ottenendo questo errore:T_INLINE_HTML? Cosa c'è di sbagliato in questo?

Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT in /Applications/XAMPP/xamppfiles/htdocs/Smooth Framework/tpl/terminal.tpl.php on line 33

Dove linea 33 è la linea 2 di questo script. Questo è inserito in un contesto di modello. Cosa c'è di sbagliato in questo? Si aspetta un T_CASE e questo è quello che c'è!

+0

l'errore potrebbe essere in agguato in qualsiasi delle 31 linee che hai ommited – Mchl

+0

Prima di tutto, non utilizzare i tag brevi. E non continuare ad entrare e uscire dal contesto PHP in questo modo, è davvero brutto. Se lo aggiusti, probabilmente troverai che l'errore scompare subito. – ircmaxell

+0

@Mchl, per niente. Le righe di errore PHP si riferiscono sempre alla riga precedente o corrente. In modo che l'errore nella riga 33 potrebbe essere nella riga 33 o 32, non precedente. Dato che il 32 è mostrato, perché PHP non si è fermato a 32 invece? – Shoe

risposta

10

linea di fusione 1 e 2

<? switch($data['type']): 
    case 'log': ?> 

vedere il commento in questo link (Jeremia a puntino GMX a 28-gen-2008 02:52)

+1

Esattamente: [LXR: language_parser.y] (http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_language_parser.y#405). Nessun 'T_INLINE_HTML' permesso lì. – NikiC

3

Il parser si aspetta un token T_CASE ma trova la nuova riga dopo switch($data['type']) : ?>.

switch (1) : ?> <? case 1: break; endswitch; 

dà un errore di analisi e così fa

switch (1) : ?>\n<? case 1: break; endswitch; 

mentre

switch (1) : ?><? case 1: break; endswitch; 

non lo fa. ;-)