2016-04-13 21 views
0

Ich habe diesen Code bekam:Convert PHP Objekt String

<?php 
    $imageVar = $entry->field('logo')->generate(); 
    $path = $imageVar; 
    $file = basename($path, ".svg"); 
    $rest = substr($file, 0, -9); 
?> 

<img src="<?php echo $imageVar; ?>" onerror="this.onerror=null; this.src='files/media/images/partners/<?php echo $rest; ?>.png'" title="<?php echo $entry->field('name')->value(); ?>" alt="<?php echo $entry->field('name')->value(); ?>" > 

Seine Arbeit, aber ich erhalte eine Fehlermeldung wie folgt aus:

[13-Apr-2016 10:00:49 GMT] 
PHP Warning: basename() expects parameter 1 to be string, object given in /wwwroot.wwwnew/templates/customcatalog_partnerpool_leser_1_1.html5 on line 58 
#0 [internal function]: __error(2, 'basename() expe...', '/wwwroot.wwwnew...', 58, Array) 
#1 /wwwroot.wwwnew/templates/customcatalog_partnerpool_leser_1_1.html5(58): basename(Object(Contao\FilesModel), '.svg') 
#2 /wwwroot.wwwnew/system/modules/core/library/Contao/BaseTemplate.php(88): include('/wwwroot.wwwnew...') 
#3 /wwwroot.wwwnew/system/modules/core/library/Contao/Template.php(277): Contao\BaseTemplate->parse() 
#4 /wwwroot.wwwnew/system/modules/core/classes/FrontendTemplate.php(46): Contao\Template->parse() 
#5 /wwwroot.wwwnew/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Plugins/CustomCatalog/Core/CustomCatalog.php(436): Contao\FrontendTemplate->parse() 
#6 /wwwroot.wwwnew/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Plugins/CustomCatalog/Frontend/ModuleReader.php(145): PCT\CustomElements\Plugins\CustomCatalog\Core\CustomCatalog->render() 
#7 /wwwroot.wwwnew/system/modules/core/modules/Module.php(283): PCT\CustomElements\Plugins\CustomCatalog\Frontend\ModuleReader->compile() 
#8 /wwwroot.wwwnew/system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Plugins/CustomCatalog/Frontend/ModuleReader.php(95): Contao\Module->generate() 
#9 /wwwroot.wwwnew/system/modules/core/elements/ContentModule.php(59): PCT\CustomElements\Plugins\CustomCatalog\Frontend\ModuleReader->generate() 
#10 /wwwroot.wwwnew/system/modules/core/library/Contao/Controller.php(484): Contao\ContentModule->generate() 
#11 /wwwroot.wwwnew/system/modules/core/modules/ModuleArticle.php(213): Contao\Controller::getContentElement(Object(Contao\ContentModel), 'main') 
#12 /wwwroot.wwwnew/system/modules/core/modules/Module.php(283): Contao\ModuleArticle->compile() 
#13 /wwwroot.wwwnew/system/modules/core/modules/ModuleArticle.php(67): Contao\Module->generate() 
#14 /wwwroot.wwwnew/system/modules/core/library/Contao/Controller.php(417): Contao\ModuleArticle->generate(false) 
#15 /wwwroot.wwwnew/system/modules/core/library/Contao/Controller.php(277): Contao\Controller::getArticle(Object(Contao\ArticleModel), true, false, 'main') 
#16 /wwwroot.wwwnew/system/modules/core/pages/PageRegular.php(133): Contao\Controller::getFrontendModule('0', 'main') 
#17 /wwwroot.wwwnew/system/modules/core/controllers/FrontendIndex.php(285): Contao\PageRegular->generate(Object(Contao\PageModel), true) 
#18 /wwwroot.wwwnew/index.php(20): Contao\FrontendIndex->run() 
#19 {main} 

Aber ich habe keine Ahnung, wie das Problem zu lösen.

+1

was ist die Ausgabe von '$ path' sein ? – urfusion

+3

$ imageVar ist ein Objekt, können Sie 'print_r ($ imageVar);' verwenden und uns das Ergebnis anzeigen? –

+0

Die Ausgabe von $ patch lautet: "assets/images/d/1900-cd29b6dd.png" und $ imageVar hat die gleiche Ausgabe. – fr3d

Antwort

2

Zunächst sollten Sie diffrence zwischen Objekt und String

$imageVar = $entry->field('logo')->generate(); 
      $path = $imageVar; 

hier verstehen $ imageVar Objekt nicht String geworden ist, so dass Sie zuerst bez Ihre Funktion $ file = Basisnamen ($ path ".svg" ändern); ist erforderlich String nicht Objekt

, wenn Sie dies in PHP tun dann (string) befour die $ imageVar verwenden jetzt wird Ihr Code

$imageVar = $entry->field('logo')->generate(); 
       $path = (string)$imageVar; 

versuchen

+0

Das funktioniert für 90% :) aber nicht für dieses: $ imageVar = \ FilesModel :: findByUuid ($ result-> logo); $ path = (Zeichenkette) $ imageVar; Der Fehler lautet PHP Behebbarer Fehler: Das Objekt der Klasse Contao \ FilesModel konnte nicht in die Zeichenfolge in /wwwroot.wwwnew/templates/customcatalog_partnerpool_leser_1_1.html5 in Zeile 57 konvertiert werden. – fr3d

+0

$ imageVar = \ FilesModel :: findByUuid ($ result-> logo); Dies ist nicht in Ihrem obigen Code erwähnt –

+0

Ja, ich sah es gerade jetzt, ich dachte es ist das gleiche. – fr3d