0

我的 CakePHP 应用程序中有一个 Element,它有一些字段和一个按钮。我想使用这个元素放置在我的所有页面中,并且当用户单击按钮时,它会转到相同的控制器和操作。Element 中的表单适用于根页面,但是当我在另一个页面上并单击按钮时,该功能永远不会被点击,地址栏只会附加控制器/功能。

元素:

<form id="login-user" action="Login/doSomething" method="post">

      <input id="edit-submit-button" class="form-submit" type="submit" value="Log in" name="op">   </input>
</form>

我的控制器是:

class LoginController  extends Controller{
    public  $helpers=array('Js'=>array('Jquery'), 'Session');

    public function index() {
        $this->autoRender = false;
    }

    function  doSomething(){            
        $this->redirect("/");

    }
}

我在 Pages.ctp 文件和视图中有这个元素。当我单击 Pages.ctp 文件中的按钮时,页面会被重定向到 localhost/myApp/Login/doSomething 并且该函数会正常运行。但是如果元素在视图中(localhost/myApp/somePage/view)并且用户单击表单按钮,则页面只会重新加载并在地址末尾附加“Login/doSomething”,但永远不会点击该功能。

有人知道如何解决这个问题吗?

4

2 回答 2

2

1)您应该尝试使用 FormHelper 而不是手动编写

2)您至少应该使用 CakePHP Helper 或其他东西构建 URL

3)您的链接是相对的-/在它之前添加a,它可能会起作用-如果仍然不起作用,那么您的链接就是错误的。

例子:

<?php
echo $this->Form->create('User', array(
    'url' => array(
        'controller'=>'users',
        'action'=>'login'
    ),
    'id' => 'login-user'
));
//...
于 2013-11-14T17:45:11.347 回答
1

您需要更改您的操作以包含 Controller + Action

你有的例子:

<form id="login-user" action="Login/doSomething" method="post">

如果 Login 是您的控制器,它应该是:

<form id="login-user" action="/Login/doSomething" method="post">

但是,如果您的以下 MVC;用户应该是您的控制器,登录应该是您的方法,如果您使用 CakePHP,最好遵循约定并使用它提供的 HTML Helper,您的上述代码:

<form id="login-user" action="Login/doSomething" method="post">

  <input id="edit-submit-button" class="form-submit" type="submit" value="Log in" name="op">   </input>
</form>

应该 :

 <?php
   echo $this->Form->create('User', array('id'=>'login-user', 'url'=>'/user/login'));
   echo $this->Form->submit('Log In', array('class'=>'form-submit', 'id'=>'edit-submit-button'));
   echo $this->Form->end();
 ?>

创建控制器时,请想想自己……这是一个主要实体吗?它是否需要多种方法……

例如....我需要用户登录,在 CakePHP 中....用户应该是具有“登录”方法的控制器

于 2013-11-14T17:48:24.567 回答