среда, июля 08, 2009

Как добавить в форму admin генератора ссылку

К примеру у вас есть backend (admin) и вам нужно поставить ссылку на какой нибудь ресурс.
Для этого нужно создать свой виджет, например, такой:



class sfWidgetFormHtmlLink extends sfWidgetForm
{

protected function configure($options = array(), $attributes = array())
{
$this->addOption('url', false);
$this->addOption('target', 'self'); // self, blank
$this->addOption('route', false);
$this->addOption('name', true);
}

public function render($name, $value = null, $attributes = array(), $errors = array())
{
if($this->getOption('route')){
return link_to(
$this->getOption('name'),
$this->getOption('route'),
array('target'=>'_'.$this->getOption('target'))
);
}

if($this->getOption('url')){
return "<a href='".$this->getOption('name').
"' target='_".$this->getOption('target')."'>".
$this->getOption('name')."</a>";
}

}
}


Теперь его просто использовать:

class SomeForm extends BaseSomeForm
{

public function configure()
{
$this->setWidget('external_link',new sfWidgetFormHtmlLink(array('url'=>'http://ya.ru','name'=>'Поискать')));
}
}


Меняя метод render можно создать свой виджет по выводу какого-либо html текста и т.д.

1 комментарий:

eddifisher комментирует...

а где создавать новые виджеты ??