从 CakePHP 中 $html->image() 的输出中删除 'src' 属性
Removing 'src' attribute from output of $html->image() in CakePHP
我正在使用 CakePHP 1.2。我正在尝试使用 jQuery Lazy (http://jquery.eisbehr.de/lazy/example_basic-usage) from CakePHP. Reading the documentation at https://book.cakephp.org/1.2/en/The-Manual/Core-Helpers/HTML.html#image,它显示了如何
<?php echo $html->image('cake_logo.png', array('alt' => 'CakePHP'))?>
产生以下输出:
<img src="/img/cake_logo.png" alt="CakePHP" />
我需要产生这个输出:
<img class="lazy" data-src="/img/cake_logo.png" />
如何在 CakePHP 1.2 中使用 $html->image()
来做到这一点?问题是在语法 image(string $path, array $htmlAttributes = array())
中,第一个参数是必需的,并且在输出中它产生 img
的 src=...
属性。我需要一个 <img... />
不包含 src=...
属性的输出。我怎样才能在 CakePHP 中使用 $html->image() 来实现它?
通过内置的 HTML 助手,不修改标签模板是不可能的。因此,如果您需要延迟加载所有图像,那么您可以将 image
标签模板更改为类似以下内容:
<img class="lazy" data-src="%s" %s/>
然而,这会与使用 class
属性发生冲突。因此,您也可以扩展 HTML 帮助程序并实现自定义 image()
方法(或其他方法)。这是一个简单粗暴的例子,应该是不言自明的:
function image($path, $options = array())
{
$defaults = array(
'class' => null
);
$options += $defaults;
$options['class'] = 'lazy ' . $options['class'];
$originalTemplate = $this->tags['image'];
$this->tags['image'] = '<img data-src="%s" %s/>';
$imageHtml = parent::image($path, $options);
$this->tags['image'] = $originalTemplate;
return $imageHtml;
}
另见
我正在使用 CakePHP 1.2。我正在尝试使用 jQuery Lazy (http://jquery.eisbehr.de/lazy/example_basic-usage) from CakePHP. Reading the documentation at https://book.cakephp.org/1.2/en/The-Manual/Core-Helpers/HTML.html#image,它显示了如何
<?php echo $html->image('cake_logo.png', array('alt' => 'CakePHP'))?>
产生以下输出:
<img src="/img/cake_logo.png" alt="CakePHP" />
我需要产生这个输出:
<img class="lazy" data-src="/img/cake_logo.png" />
如何在 CakePHP 1.2 中使用 $html->image()
来做到这一点?问题是在语法 image(string $path, array $htmlAttributes = array())
中,第一个参数是必需的,并且在输出中它产生 img
的 src=...
属性。我需要一个 <img... />
不包含 src=...
属性的输出。我怎样才能在 CakePHP 中使用 $html->image() 来实现它?
通过内置的 HTML 助手,不修改标签模板是不可能的。因此,如果您需要延迟加载所有图像,那么您可以将 image
标签模板更改为类似以下内容:
<img class="lazy" data-src="%s" %s/>
然而,这会与使用 class
属性发生冲突。因此,您也可以扩展 HTML 帮助程序并实现自定义 image()
方法(或其他方法)。这是一个简单粗暴的例子,应该是不言自明的:
function image($path, $options = array())
{
$defaults = array(
'class' => null
);
$options += $defaults;
$options['class'] = 'lazy ' . $options['class'];
$originalTemplate = $this->tags['image'];
$this->tags['image'] = '<img data-src="%s" %s/>';
$imageHtml = parent::image($path, $options);
$this->tags['image'] = $originalTemplate;
return $imageHtml;
}
另见