如何在cakephp中获取url参数?

如何在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

我使用的是cakephp 2.6.7: 我有一个密码重置url,如:

这里,分销商是控制器,resetpw是操作,9610F4E33D96AD6189C5A779AB90F10ABXX106605669XXB12是我要传递到resetpw函数的参数

现在在resetpw.ctp中:

<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();