我到处寻找,无法找到如何使用CakePHP的HtmlHelper创建安全链接(https)。
似乎这应该是一个简单的选择,但......显然它不是。
答案 0 :(得分:2)
结束只是扩展HtmlHelper并允许用户(我)传递'_secure'=>true
作为选项(见下文)。
当然,这可以延长,清理等等,但是 - 它对我的目的很有用。
自定义“MyHtmlHelper”:
<?php
//app/View/Helper/MyHtmlHelper.php
App::uses('HtmlHelper', 'View/Helper');
class MyHtmlHelper extends HtmlHelper {
public function link($title, $url = null, $options = array(), $confirmMessage = false) {
if(!empty($url['_secure']) && $url['_secure'] === true) {
unset($url['_secure']);
$url = str_replace('http:', 'https:', parent::url($url));
}
return parent::link($title, $url, $options, $confirmMessage);
}
}
<强>解释强>
基本思想是检查你是否在选项数组中作为选项传递'secure'。如果这样做,它会强制链接为'full_base'(即带有http://
的完整URL ...),然后将URL构建为字符串并将'http:'替换为'https:'
使用方法:
echo $this->Html->link('SSL LINK!', array(
'controller' => 'orders',
'action' => 'tickets',
'full_base' => true,
'secure' => true
));
<强>提醒:强>
你必须告诉你的应用你想要使用你的助手作为HtmlHelper:
public $helpers = array(
'Html' => array('className' => 'MyHtml'),
);