2017-10-13 62 views

回答

2

如果你想在任何HTML幫助插入HTML元素添加<?php echo $this->Html->link('...') ?>,你必須添加'escape'=> false。檢查文檔https://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::link

簡單的例子:

$this->Html->link('<b>My Content</b>','#',[ 
    'escape' => false 
]); 

對於您的情況:

$this->Html->link(
    $this->Html->div('list_content', 
     $this->Html->para('title',$note['Note']['title']). 
     $this->Html->para('create_at',$note['Note']['create_at']). 
     $this->Html->para(null,substr($note['Note']['content'], 0,100) . '...') 
    ), 
    '#', 
    ['escape' => false] 
); 
+1

如果你禁用了'escape',你應該記得使用'h()'來逃避任何用戶輸入。爲了安全起見,Cake默認故意轉義鏈接文本,因此禁用此操作需要謹慎操作。 – drmonkeyninja

+0

非常感謝,但我使用CKEditor添加內容注意。當內容有標籤 ... 時,它不會位於$ this-> Html-> link('...')。 –

0

如果你要使用祖阿曼的回答,請記住,通過設置'escape' => false要禁用默認的安全功能。所以,你可能想確保,那麼你使用h()方法逃避任何用戶輸入: -

$this->Html->link(
    $this->Html->div('list_content', 
     $this->Html->para('title', h($note['Note']['title'])). 
     $this->Html->para('create_at', h($note['Note']['create_at'])). 
     $this->Html->para(null, substr(h($note['Note']['content']), 0,100) . '...') 
    ), 
    '#', 
    ['escape' => false] 
); 

如果你有很多的標記,你希望你的<a>標籤內,有時更容易使用$this->Html->url()代替(並可能導致更可讀的代碼): -

<a href="<?= $this->Html->url('#') ?>"> 
    <div class="list_content"> 
     <p class="title"><?php echo $note['Note']['title']; ?></p> 
     <p class="create_at"><?php echo $note['Note']['create_at'] ?></p> 
     <p> <?php echo substr($note['Note']['content'], 0,100) . '...' ?></p> 
    </div> 
</a> 

唯一真正的缺點我知道這樣做第二個例子是,你失去了,你可以添加到任何$this->Html->link()功能,但我懷疑這是不是一個關注廣大用戶。

相關問題