[CakePHP] Jak renderować / używać element() w Helper.

Helper jest używany żeby wykonywać te same zadania, ten sam kod, w różnych widokach. Z czasem jak projekty robią się większe i skomplikowane, metody HtmlHelper przestają wystarczać. Powstaje potrzeba renderowania w wielu miejscach dużych fragmentów HTML. CakePHP nie wspiera bezpośrednio takiej konstrukcji, ale jest to możliwe i działa prawidłowo. Musimy dobrać się do widoku, który nie jest bezpośrednio dostępny, jakby podpowiadała to inturicja. Na szczęście można się do niego odwołać poprzez zmienną $this->_View , widok jest przekazywany w konstruktorze. Jeśli ktoś wie dlaczego nie powinno się odwoływać w ten, sposób albo co takie manipulowanie może popsuć proszę o wpis w komentarzu. W każdym razie developer frameworka ADmad tak twierdzi tutaj: http://stackoverflow.com/questions/12935517/using-this-element-inside-a-customhelper

Kod renderowania element() w Helper CakePHP:

<?php
App::uses('AppHelper', 'View/Helper');

class SliderRendererHelper extends AppHelper {

    public function __construct(View $View, $settings = array()) {
        parent::__construct($View, $settings);        
    }

    public function render_sliders_in_content(){
        return $this->_View->element('some_element');
    }

}

 

Leave a comment

Your email address will not be published. Required fields are marked *