2014-10-22 2 views
0

Это дает мне неожиданный конец $, но я не могу найти, где проблема, нет пробелов или отступов до или после EOD. Я использую eval() для замены.

<?php echo <<<EOD 
<?php 
    if((\${$type}s = \$this->{$type}())): 
     foreach(\${$type}s as \$item): 
?> 

      <tr> 
       <td><?php echo \$item->Name; ?></td> 
       <td><?php echo Table::countRows(\$item->Name); ?></td> 
       <td><?php echo \$item->Engine; ?></td> 
       <td><a href="<?php echo get_url('cp/system/database/tables/view/'.\$item->Name); ?>">Show</a></td> 
       <td><a href="<?php echo get_url('cp/system/database/tables/rename/'.\$item->Name); ?>">Rename</a></td> 
       <td><a href="<?php echo get_url('cp/system/database/tables/delete/'.\$item->Name.'/confirm'); ?>" class="item-remove-button">Delete</a></td> 
      </tr> 

<?php 
     endforeach; 
    endif; 
?> 
EOD; ?> 
+0

Вы понимаете, что ' Name; ?> 'будет * ran * и не повторился буквально, не так ли? Вы буквально эхом отдаете 'foreach ($ {$ type} s как $ item)', но затем * running * ' Name; ?> '. Что вы пытаетесь сделать с этим кодом? –

+0

@RocketHazmat да, я знаю это, поэтому я исправил вышеуказанный код. Это будет использоваться как шаблон для создания узлов. Теперь он работает так, как предполагалось. Не знал об EOD; нуждаясь в одиночестве. – user3718566

ответ

3

EOD;потребности быть на отдельной строке. У вас не может быть ничего еще не на этой линии.

<?php echo <<<EOD 
<?php 
    if((${$type}s = $this->{$type}())): 
     foreach(${$type}s as $item): 
?> 
EOD; 
?> 

      <tr> 
       <td><?php echo $item->Name; ?></td> 
       <td><?php echo Table::countRows($item->Name); ?></td> 
       <td><?php echo $item->Engine; ?></td> 
       <td><a href="<?php echo get_url('cp/system/database/tables/view/'.$item->Name); ?>">Show</a></td> 
       <td><a href="<?php echo get_url('cp/system/database/tables/rename/'.$item->Name); ?>">Rename</a></td> 
       <td><a href="<?php echo get_url('cp/system/database/tables/delete/'.$item->Name.'/confirm'); ?>" class="item-remove-button">Delete</a></td> 
      </tr> 

<?php echo <<<EOD 
<?php 
     endforeach; 
    endif; 
?> 
EOD; 
?> 

Docs: http://us3.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

0

Конец Heredoc тегов (здесь EOD) должен быть один на линии (точка с запятой).

Переместить ?> на следующей строке.

Но, что более важно, что вы пытаетесь сделать точно?

Смежные вопросы