CodeIgniter Polska Forum

Witamy na polskiej stronie wsparcia CodeIgniter. Nie zapomnij odwiedzić naszej strony głównej

Nie jesteś zalogowany na forum.

#1 25-02-2014 20:45:15

arti
Użytkownik
Data rejestracji: 10-11-2012
Liczba postów: 7

Biblioteka Template(Phil Sturgeon)

Witam,
Od jakiego czasu zacząłem stosować bibliotekę. Moim jedynym problemem z którym nie mogę sobie poradzić to metoda set_breadcrumb.
Stosuje ją w sposób(kontroler):

       $data['page_list'] = $this->Pages_model->get_list_limit(9, 0, $this->active_lang);
		$this->template
		->set_breadcrumb('Start', 'start/index')
				->build('start/index', $data);

wywołanie w layout(view):

<?php echo $template['breadcrumbs']; ?>

jednak wywala błąd(view):

A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: layouts/layout.php
Line Number: 22

Nie wiem czy dobrze kombinuję. Przeszukałem już chyba wszystkie możliwości w tym temacie smile
Prośba o podesłanie jakiego pomysłu/przykładu wywołania tej metody od strony kontrolera.

Offline

#2 25-02-2014 21:17:28

renholder
Administrator
Data rejestracji: 06-09-2012
Liczba postów: 848

Odp: Biblioteka Template(Phil Sturgeon)

Ta zmienna jest tablicą. Proponuję wykonać print_r() - wszystko stanie się jasne.
Do wyświetlania przyda się foreach().

Offline

#3 28-02-2014 16:42:56

arti
Użytkownik
Data rejestracji: 10-11-2012
Liczba postów: 7

Odp: Biblioteka Template(Phil Sturgeon)

Niestety coś robię nie tak.
Próbowałem twojej podpowiedzi "renholder", ale nic nie wychodzi.
Poniżej podsyła kodzik z jakiego próbuję zrobić set_breadcrumb.

    public function index($slug = null)
    {
        $this->output->cache($this->config->item('cache'));
        // set lang use
        $data['lang'] = $this->active_lang;

        // loading page
        if ($slug === null)
        {
            $data['page'] = $this->Cms_model->get_page_by_id($this->config->item('page_first_'.$this->active_lang));
        }
        else
        {
            $data['page'] = $this->Cms_model->get_page_by_slug($slug);
        }
        if (!isset($data['page']['page_title']))
        {
            show_error('This page is not found!');
        }
        // set layout
        $this->template->set_theme('default')
        ->set_layout('layout');
        $this->page_active = $data['page']['page_id'];

        // set menu list
        foreach ($this->config->item('menu_list') as $k => $v)
        {
            $this->menu_list[$k] = $this->Cms_model->get_menu($this->active_lang, $k);
            $data['menu_'.$k] = $this->_generate_menu($k);
        }

        // check in module load
        if ($data['page']['page_module'] != '0')
        {
            $this->config->set_item('module_uri', $this->active_lang.'/'.$data['page']['page_slug']);
            $module_name = $data['page']['page_module'];
            if ($this->load->module($module_name))
            {
                $this->load->library('parser');
                $parse = array('content' => $this->$module_name->render());
                $data['page']['page_text'] = $this->parser->parse_string($data['page']['page_text'], $parse, true);
            }
        }
        else
        {
            if ($this->auth->is_login())
            {
                $permissions = explode(',', $data['page']['page_permissions_group']);
                if($this->auth->is_super_admin() OR in_array($this->auth->get_user_group_id(), $permissions))
                {
                    if ($this->uri->segment('3') === 'edit')
                    {
                        $data['page']['page_text'] = $this->_edit($data);
                    }
                    else
                    {
                        $edit = $this->template->set('edit_page', array('edit_url' => $this->active_lang.'/'.$data['page']['page_slug'].'/edit'), true);
                        $data['page']['page_text'] .= $this->_edit($data);
                    }
                }
            }
        }
		
        $this->template
        ->title('testt', $data['page']['page_title'])
		->set_metadata('description', $data['page']['page_description'])
		->set_metadata('keywords', $data['page']['page_keywords'])
        ->set_breadcrumb('')
        ->build('index', $data);
    }

Ostatnio edytowany przez arti (28-02-2014 16:43:40)

Offline

#4 28-02-2014 22:17:14

cssBlaster21895
Użytkownik
Data rejestracji: 14-06-2013
Liczba postów: 172

Odp: Biblioteka Template(Phil Sturgeon)

Cześć,

sam używam tej biblioteki z powodzeniem, jednak set_breadcrumb jeszcze nie ruszałem. Po przyjrzeniu się tej funkcji nie widzę tam nic specjalnego. Ta metoda wydaje się jakby niedokończona. Bo ustawiamy sobie set_breadcrumb('tekst linka','uri segment czy coś tam, może href') dla każdego odcinka breadcrumb osobno i co dostajemy to zmienna $template['breadcrumbs'], którą i tak musimy ziterować za pomocą foreach, bo jest to array.

<?php
//controller
   $this->template
      ->set_breadcrumb('pierwszy segment','/pages/index')
      ->set_breadcrumb('drugi segment','/pages/add')
      ->build('pages/index',array('pages' => $pages));

//view
 foreach ($template['breadcrumbs'] as $value) {
              echo  '<a href="'.$value['uri'].'">'.$value['name'].'</a> >>';
            }

?>

Daj znać, jak masz inne spostrzeżenia. Pozdrawiam.

Offline

#5 12-03-2014 16:55:49

arti
Użytkownik
Data rejestracji: 10-11-2012
Liczba postów: 7

Odp: Biblioteka Template(Phil Sturgeon)

Dzięki za sugestię "cssBlaster21895".
Tak ta funkcja faktycznie nie robi nic specjalnego, ale chciałem używać jednej biblioteki do templatek smile
"renholder" tobie też dziękuje za nakierowanie na właściwy trop smile

Offline

Stopka