използване на помощник за изглед partialLoop в контролера

в моя контролер използвам json модел за "ajax действие". В действието имам масив от обект с данни, който бих искал да изобразя с "помощник за изглед на partialLoop"

Използвам кода, посочен по-долу

public function addLookuptableAction(){
    try{
        //CUT
        $repositoryModuloLookup = $this->em->getRepository('User\Entity\ModuloLookup');
        $moduloLookUpEnAllArr = $repositoryModuloLookup->findAll();
        $htmlModuleLookUp = $this->createHtmlModuleLookUp($moduloLookUpEnAllArr);
        $o['s'] = 'success';
        $o['i'] = "ok" . $out;
    }catch(\Exception  $e){
        $newExceptionCode = new GetExceptionCode($this);
        $o['s'] = 'error';
        $o['i'] = $newExceptionCode->GetCode($e);;
    }
    return new JsonModel($o);
}

private function createHtmlModuleLookUp($moduloLookUpEnAllArr){
    if(count($moduloLookUpEnAllArr) > 0){
        $partialLoop = $this->getPartialLoop();
        //$partialLoop->setView(new View() );
        $partialLoop('modulo.lookuptbl.tbl.phtml',$moduloLookUpEnAllArr)->setObjectKey('object');
    }
}

private function getPartialLoop(){
    return  new \Zend\View\Helper\PartialLoop();
}

но получавам следния код за грешка

Fatal error: Call to a member function render() on a non-object in D:\www\httpdocs\test\vendor\zendframework\zendframework\library\Zend\View\Helper\Partial.php on line 61

грешката е ясна

има ли начин да получа това, което искам, използвайки vie helper?


person ciro    schedule 31.07.2014    source източник


Отговори (1)


Можете да го получите от serviceLocator на контролера. Първо трябва да вземете viewHelperManager, след като го получите, можете да намерите partialLoop:

    $vhm = $this->getServiceLocator()->get( 'viewhelpermanager' );
    $partialLoop = $vhm->get( 'partialloop' );

Можете да получите някой от тези помощници за преглед чрез viewHelperManager:

    'doctype'             => 'Zend\View\Helper\Doctype', // overridden by a factory in ViewHelperManagerFactory
    'basepath'            => 'Zend\View\Helper\BasePath',
    'url'                 => 'Zend\View\Helper\Url',
    'cycle'               => 'Zend\View\Helper\Cycle',
    'declarevars'         => 'Zend\View\Helper\DeclareVars',
    'escapehtml'          => 'Zend\View\Helper\EscapeHtml',
    'escapehtmlattr'      => 'Zend\View\Helper\EscapeHtmlAttr',
    'escapejs'            => 'Zend\View\Helper\EscapeJs',
    'escapecss'           => 'Zend\View\Helper\EscapeCss',
    'escapeurl'           => 'Zend\View\Helper\EscapeUrl',
    'gravatar'            => 'Zend\View\Helper\Gravatar',
    'headlink'            => 'Zend\View\Helper\HeadLink',
    'headmeta'            => 'Zend\View\Helper\HeadMeta',
    'headscript'          => 'Zend\View\Helper\HeadScript',
    'headstyle'           => 'Zend\View\Helper\HeadStyle',
    'headtitle'           => 'Zend\View\Helper\HeadTitle',
    'htmlflash'           => 'Zend\View\Helper\HtmlFlash',
    'htmllist'            => 'Zend\View\Helper\HtmlList',
    'htmlobject'          => 'Zend\View\Helper\HtmlObject',
    'htmlpage'            => 'Zend\View\Helper\HtmlPage',
    'htmlquicktime'       => 'Zend\View\Helper\HtmlQuicktime',
    'inlinescript'        => 'Zend\View\Helper\InlineScript',
    'json'                => 'Zend\View\Helper\Json',
    'layout'              => 'Zend\View\Helper\Layout',
    'paginationcontrol'   => 'Zend\View\Helper\PaginationControl',
    'partialloop'         => 'Zend\View\Helper\PartialLoop',
    'partial'             => 'Zend\View\Helper\Partial',
    'placeholder'         => 'Zend\View\Helper\Placeholder',
    'renderchildmodel'    => 'Zend\View\Helper\RenderChildModel',
    'rendertoplaceholder' => 'Zend\View\Helper\RenderToPlaceholder',
    'serverurl'           => 'Zend\View\Helper\ServerUrl',
    'viewmodel'           => 'Zend\View\Helper\ViewModel',
person lluisaznar    schedule 31.07.2014
comment
благодаря работи. добавям, че ако поставите partialLoop в свойство на контролер, като $this->partialLoop, тогава, когато го извикате, ще получите грешка. Мисля, че това се случва, защото класът на контролера се опитва да инициализира приставката на контролера, наречена partialLoop. Съжалявам, но не мога да гласувам с плюс едно, защото нямам достатъчна репутация при препълване на стека. Отбелязах вашия отговор като правилен отговор - person ciro; 02.08.2014