Filter s napojenim do db alebo?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- zdeno
- Člen | 13
Ako riešit túto situáciu:
V tinymce pri editacii textu článku zadam kód napr {link Product:detial 1} {value Product:price 1} a chcem aby to vrátilo link a cenu produktu ktory som chcel.
Bez nette som to mal cez regular a databazu, ktora mi vratila potrebne hodnoty. Nejak taktot
<?php
function getText($smart = true)
{
if($smart) {
$this->text = $this->helper->getSmartText($this->text);
//+ nejaka ta cache
} else {
$this->text;
}
}
?>
Ako to riešiť v nette? Cez filtry a vlozit tam nejak databazu? {$article->text|smartText}
alebo v presentery si definovat
<?php
$template->article = $article->model->get( id )
$template->text = $neco->getSmartText($article->text);
/* jak sa da vyriesit update? $article->text = ..use update() error */
?>
Pokial do filtra DB, ako ju vrazím do statickej triedy? alebo mam aj tie filtry blbo? :)
<?php
class Filters
{
public static function common($filter, $value)
{
if (method_exists(__CLASS__, $filter)) {
$args = func_get_args();
array_shift($args);
return call_user_func_array(array(__CLASS__, $filter), $args);
}
}
public static function price($price)
{
$price = $price * self::$course;
return number_format($price, 0, ",", " ")." ".self::$courseCode;
}
...
}
?>
Díky
- CZechBoY
- Člen | 3608
problém update: udělej z ActiveRow obyčejný objekt
$row = (object)iterator_to_array($row);
problém statická třída: udělej z ní službu
class MujHelper
{
private $db;
public function __construct(Nette\Database\Context $db)
{
$this->db = $db;
}
public function price($price)
{
$price = $price * $this->getCourse();
return $this->localizeMoney($price);
}
}
services:
- MujHelper
class MujPresenter extends Nette\Application\UI\Presenter
{
private $mujHelper;
public function __construct(MujHelper $mujHelper)
{
parent::__construct();
$this->mujHelper = $mujHelper;
}
// pokud bys chtěl zaregistrovat ještě ten filtr
public function beforeRender()
{
$this->template->addFilter('price', [$this->mujHelper, 'price']);
}
}
Editoval CZechBoY (21. 10. 2016 12:49)