登录与CakePHP和jQuery移动



我正在用CakePHP 2.3和jQuery mobile构建一个移动应用程序。

我有一个艰难的时间登录工作。我发送包含调查的链接,如果用户没有在他们的移动浏览器上登录,它首先会让他们登录。

问题是,第一次,它只是刷新到一个空白页。如果你关闭页面并重新打开链接,它可以工作,但这很糟糕。我希望它能正确地重定向。

下面是login的视图:

<div class="users form">
    <?= $this->Session->flash('auth'); ?>
    <?= $this->Form->create('User'); ?>
    <fieldset>
    <?
        echo $this->Form->input('username');
        echo $this->Form->input('password');
    ?>
    </fieldset>
    <?
    $options = array(
        'label' => 'Login',
        'rel' => 'external',
        'data-ajax' => false
    );
    ?>
    <?= $this->Form->end($options); ?>
</div>

可以看到,我尝试了rel=externaldata-ajax=false

将登录放在同一页面上可能会以某种方式解决这个问题,但这似乎违背了使用CakePHP的初衷。

任何想法?我难住了。

这不会在Cake中创建AJAX表单。

必须禁用表单的默认操作,然后通过Javascript提交数据。您可以使用Cake中内置的JsHelper来完成此操作。

要禁用表单的自动提交,您需要将此传递给create方法。

形式->创建("用户",数组("违约"=> false));?>

然后可以使用JsHelper的serializeForm方法。

<?php
$data = $this->Js->get('#UserForm')->serializeForm(array('isForm' => true, 'inline' => true));
$this->Js->get('#UserForm')->event(
      'submit',
      $this->Js->request(
        array('action' => 'save'),
        array(
                'update' => '#UserForm',
                'data' => $data,
                'async' => true,    
                'dataExpression'=>true,
                'method' => 'POST'
            )
        )
    );
?>

注意:上面要求将JsHelper的输出放在布局的适当位置。

你现在可以这样呈现表单。

<div class="users form">
    <?= $this->Session->flash('auth'); ?>
    <?= $this->Form->create('User',array('default'=>false)); ?>
    <fieldset>
    <?
        echo $this->Form->input('username');
        echo $this->Form->input('password');
    ?>
    </fieldset>
    <?
    $options = array(
        'label' => 'Login',
    );
    ?>
    <?= $this->Form->end($options); ?>
</div>

这是我的第一印象。所以不是test。

最新更新