duanqiangwu9332
duanqiangwu9332
2014-08-29 12:40

ZF2插件返回值赋予Object无法转换为字符串

已采纳

I build my own plugin just for learning the Framework. It just returns a date(). I get an error in my view when I try to echo it. Its not that hard to understand the error, but what is hard (or at least, what I think is hard) is how I should return it from the plugin so my view (and eventually later other views) don't need any extra information as just pluginReturn?>

The plugin is registered in module.config.php (and it works, else I wouldn't have an error).

Well, some code:

Plugin:

<?php
namespace Tijdmachine\Controller\Plugin;

use Zend\Mvc\Controller\Plugin\AbstractPlugin;

class TellTheTime extends AbstractPlugin{
    /**
    * @return string
    */
    public function giveMyTime(){
        return date('H:i:s');
    }
}

Lines from Controller involved:

$plugin = $this->TellTheTime();
        $plugin->giveMyTime();

        $views = new ViewModel(array('text' => 'Het is nu de tijd.', 'pluginReturn' => $plugin));

View line:

<?=$this->pluginReturn?>

The error I'm getting: Catchable fatal error: Object of class Tijdmachine\Controller\Plugin\TellTheTime could not be converted to string in /home/snoech/code/zftuts/trunk/module/Tijdmachine/view/tijdmachine/index/index.phtml on line 19

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • douyouming9180 douyouming9180 7年前

    Your $plugin contain the object. Re-assign the value in a variable and give it to the view:

    $plugin = $this->TellTheTime();
    $myDate = $plugin->giveMyTime();
    $views = new ViewModel(array('text' => 'Het is nu de tijd.', 'pluginReturn' => $myDate));
    

    or

    $plugin = $this->TellTheTime();
    $views = new ViewModel(array('text' => 'Het is nu de tijd.', 'pluginReturn' => $plugin->giveMyTime()));
    
    点赞 评论 复制链接分享