我正在开发使用CakePHP 2.6的应用程序,并用使含有URL的字符作为一个参数的字符串通过到一个控制器的方法具有的问题。阻止CakePHP从作为参数传递的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
按钮在传递信息的“deletelink”动作控制器的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
是第三参数。
我试图包裹内serialize()
和urlencode()
在postlink调用的参数,但它们都没有过完整的字符串返回为
urlhttp%3A%2F%2Fwww.google.co.uk%2F
的预期效果没有人知道一个成功的方式穿过这样的参数不会丢失重要的字符?
更新1:Deletelink行动
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'));
}
}
是否要传递3个参数ters到'deletelink'行动?你的删除动作是怎样的? – skywalker
@skywalker是的,我想所有的3个参数传递给'deletelink'行动。这个概念是用第三个参数来做东西,然后使用前两个参数重定向到另一个动作。我已更新我的原始文章,以包含'deletelink'控制器代码。 – Daniel
你尝试[这](http://stackoverflow.com/questions/4750989/passing-an-urlencoded-url-as-parameter-to-a-controller-action-at-cakephp)? – skywalker