我正在敲打我的脑袋,在网格的自定义列上添加一个简单,简单的网站链接。我使用Inchoo blog为列添加自定义渲染器并且它可以正常工作。我只是修改渲染并添加标记就足够了。但我的希望破灭了,不起作用。
怎么做到这一点?应该很简单,但我无法找到如何。我在SO中发现了很多问题/答案,但是关于添加产品,类别等的链接,没有引用外部网站,也许我只是在搜索中使用了错误的关键字。
这是我的Grid.php中的_prepareColumns()
protected function _prepareColumns() {
$blog = Mage::getModel('blogtest/blog');
$this->addColumn('api_blog_url', array(
'header' => $this->__('URL'),
'align' => 'center',
'index' => 'api_blog_url',
'width' => 50,
'type' => 'text',
'renderer' => 'Dts_Blogtest_Block_Adminhtml_Blog_Renderer_MyRender'
));
....
这是我对该列的渲染覆盖:
<?php
class Dts_Blogtest_Block_Adminhtml_Blog_Renderer_MyRender extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
$value = $row->getData($this->getColumn()->getIndex());
// return '<a href="http://'.$value.'>'.$value.'</a>';
return '<span style="color:red;">'.$value.'</span>';
}
}
?>
答案 0 :(得分:4)
你的意思是红色的样式它正常工作但是如果你用<a href..>
取消注释它不是吗?
我认为你错过了href属性中的引用。
return '<a href="http://'.$value.'">'.$value.'</a>';
答案 1 :(得分:3)
顺便说一句,我认为,如果将使用下一种方法,你可以编写更好看的代码:在渲染功能中,你创建一个块并发送链接数据。之后,为此块创建块和模板。在模板中,您可以获得链接数据并根据需要显示它。
<?php
class Something
extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
$column_data = $row->getData(
$this->getColumn()->getIndex()
);
return $this->getLayout()
->createBlock('something/adminhtml_renderer_link')
->setLink($column_data )
->_toHtml();
}
}
?>
<?php
class Something
extends Mage_Core_Block_Template
{
protected function _construct()
{
parent::_construct();
$this->setTemplate('something/link.phtml');
}
}
?>
<?php
$link = $this->getLink();
?>
<?php if ($link): ?>
<a href="<?php echo $link ?>" target="_blank"><?php echo $this->__('Click to view!'); ?></a>
<?php else: ?>
<?php echo $this->__('No link'); ?>
<?php endif; ?>