Jednoduché nastavení položek webu z databáze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ikysek
Člen | 22
+
0
-

Zdravím, mám:

namespace App\Model;

class Settings extends Base {
        /** @var string */
        protected $tableName = 'settings';

        public function getAll() {
                $rows = $this->findAll();
                $settings = array();
                foreach($rows as $row) {
                        $settings[$row->name] = $row->value;
                }
                return $settings;
          }
}

(V base mám funkce pro práci s databází)

BasePresenter

<?php

namespace App\Presenters;

use Nette,
	App\Model;


/**
 * Base presenter for all application presenters.
 * @property-read \SystemContainer $context
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
    private $settings;

    public function __construct(\App\Model\Settings $settings) {
        parent::__construct();
        $this->template->settings = $this->settings = $settings->getAll();
    }
    public function getSettings($name)
    {
        return $this->settings[$name];
    }
}

Ale při použití v latte, např:

<title>{block title|striptags}{$settings['title']}}{/block}</title>

Tracy hlásí: „Undefined variable: settings“, jakto? Kdyť přece v konstruktoru BasePresenteru do template settings nalévám..

studna
Člen | 181
+
+1
-

V konstruktoru ještě neznáš šablonu (view). Pro začátek mrkni na životní cyklus presenteru https://doc.nette.org/…n/presenters#….

<?php

namespace App\Presenters;

use Nette,
    App\Model;


/**
 * Base presenter for all application presenters.
 * @property-read \SystemContainer $context
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
    private $settings;

    public function __construct(\App\Model\Settings $settings) {
        parent::__construct();
        $this->settings = $settings->getAll();
    }

	protected function beforeRender() {
		$this->template->settings = $this->settings;
	}

    public function getSettings($name)
    {
        return $this->settings[$name];
    }
}

Editoval studna (7. 3. 2015 15:30)

ikysek
Člen | 22
+
0
-

Díky moc, zase jsem si rozšířil obzor Nette