我正在使用 CakePHP 2.6 开发应用程序,并且在将包含 url 字符的字符串作为参数传递给控制器方法时遇到问题。
在我看来,我有一段代码回显出一系列包含数据的表行,并通过页面 id、单元 id 和有时可以包含 url 的链接的 id。
<?php foreach($linklist as $l) { ?>
<tr id="Link_<?php echo $l['ID']; ?>">
<td><?php echo $l['Title']; ?></td>
<td class="buttontd"><?php echo $this->Form->postlink('Delete', array('action' => 'deletelink', $this->request->params['pass'][0], $results[0]['PageUnitTypeID'], $l['ID']), array('class' => 'button delete')); ?></td>
</tr>
<?php } ?>
当postlink
按钮将信息传递给控制器中的“删除链接”操作时,URL 如下所示:
http://mydomainname.com/webpages/deletelink/239/7/urlhttp%3A%2F%2Fwww.google.co.uk%2F
这表明 url 已作为字符串传递,但是在操作中,当我尝试仅var_dump()
第三个参数时,它返回一个字符串,www.google.co.uk
仅此而已,这阻止我substr()
调用参数以检查前 3 个字符是否是否相等url
。
我试图将参数包装在内部的 postlink 调用中serialize()
,urlencode()
但都没有返回完整字符串的预期效果
urlhttp%3A%2F%2Fwww.google.co.uk%2F
有谁知道通过这样的参数而不丢失重要字符的成功方法?
更新 1:删除链接操作
public function deletelink($pid = null, $uid = null, $lid = null) {
$this->autoRender = false;
if (!is_null($pid) && is_numeric($pid) && !is_null($uid) && is_numeric($uid)) {
if (!is_null($lid)) {
if (substr($lid, 0, 3) == 'url') {
echo substr($lid, 0, 3);
} else {
echo substr($lid, 0, 3);
}
} else {
$this->Session->setFlash('It is unknown which link you wish to delete from the webpage', 'flash_message_bar', array('class' => 'error'));
return $this->redirect(array('action' => 'edit', $pid));
}
} else {
$this->Session->setFlash('It is unknown which on which webpage you wish to delete a link', 'flash_message_bar', array('class' => 'error'));
return $this->redirect(array('action' => 'index'));
}
}