如何在cakephp中获取url参数?
我使用的是cakephp 2.6.7: 我有一个密码重置url,如: 这里,分销商是控制器,resetpw是操作,9610F4E33D96AD6189C5A779AB90F10ABXX106605669XXB12是我要传递到resetpw函数的参数 现在在resetpw.ctp中:如何在cakephp中获取url参数?,cakephp,Cakephp,我使用的是cakephp 2.6.7: 我有一个密码重置url,如: 这里,分销商是控制器,resetpw是操作,9610F4E33D96AD6189C5A779AB90F10ABXX106605669XXB12是我要传递到resetpw函数的参数 现在在resetpw.ctp中: <style type="text/css"> .alert { padding: 6px; margin-bottom: 5px; border
<style type="text/css">
.alert {
padding: 6px;
margin-bottom: 5px;
border: 1px solid transparent;
border-radius: 4px;
text-align: center;
}
.alert.alert-error {
background: #A9B0B5;
color: #EF5858;
font-weight: normal;
}
</style>
<div class="page-content-wrapper">
<div class="page-content">
<!-- BEGIN PAGE CONTENT-->
<div class="content">
<!-- BEGIN LOGIN FORM -->
<?php
echo $this->Form->create('Reseller', array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'class' => 'login-form',
'url' => array('controller' => 'resellers', 'action' => 'resetpw')
)
);
?>
<h3 class="form-title">Type your new password</h3>
<div class="alert alert-danger display-hide">
<button class="close" data-close="alert"></button>
<span>
Enter your new password first. </span>
</div>
<div class="form-group">
<label class="control-label visible-ie8 visible-ie9">New Password</label>
<div class="input-icon">
<i class="fa fa-lock"></i>
<?php
echo $this->Form->input(
'password', array(
'class' => 'form-control placeholder-no-fix',
'type' => 'password',
'autocomplete' => 'off',
'placeholder' => 'New Password'
)
);
?>
</div>
</div>
<div class="form-actions">
<?php
echo $this->Form->button(
'Reset Password <i class="m-icon-swapright m-icon-white"></i>', array(
'class' => 'btn blue pull-right',
'type' => 'submit',
'escape' => false
)
);
?>
</div>
<?php echo $this->Form->end(); ?>
<!-- END LOGIN FORM -->
</div>
<!-- END PAGE CONTENT -->
</div>
</div>
<!-- END CONTENT -->
如何获取此url值。有多种方法。在下面的函数中(不是编写整个函数),您试图在
$a
中获取url参数,但您正在传递参数。因此,$a
没有价值
function resetpw($a){
$this->layout = "public-login";
$this->loadModel('Reseller');
if ($this->request->is('post')) {
echo 'a : '.$a; //$a will have no values here
pr($this->params['url']); exit;
在您的情况下,您需要像下面这样捕获参数
$a=$this->params['passed'][0]代码>
或者要获得参数,您的URL应该如下所示
http://www.jegeachi.com/resellers/resetpw?9610f4e33d96ad6189c5a779ab90f10aBXX1066056669XXB12/
这样您就可以在$a
中收集它。希望这对你有帮助 我通过删除表单中的“url”解决了这个问题
我变了
<?php
echo $this->Form->create('Reseller', array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'class' => 'login-form',
'url' => array('controller' => 'resellers', 'action' => 'resetpw')
)
);
?>
到
现在它起作用了。当您设置url时,url中的参数将被删除。正如我在对前面问题的评论中所说的,您应该首先阅读文档。在cakephp意义上,您在这个操作中所做的在两个级别上都是错误的。我想,通常情况下,您可以通过url访问此操作
.../resellers/resetpw/9610f4e33d96ad6189c5a779ab90f10aBXX1066056669XXB12/
这样,控制器中就已经有了动作参数:
public function resetpw($a = null)
然后您将检查$a
是否不为空,因为没有某种令牌您无法重置密码。在您的操作中,$a
已将此值作为值9610F4E33D96AD6189C5A779AB90F10ABXX10660566669XXB12
。
不需要使用这样的东西:
$a = func_get_args();
第二件事,你应该给参数命名要有意义,$a
并不意味着什么,但是$token
或者类似的东西会有很大的不同。实际上我把$a拆分成了我想要的变量,比如$key,$id。因此我把$a中的原始值作为临时变量。谢谢。在将$a传递给action之后,您可以使用它做任何您想做的事情。
.../resellers/resetpw/9610f4e33d96ad6189c5a779ab90f10aBXX1066056669XXB12/
public function resetpw($a = null)
$a = func_get_args();