我正在用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=external
和data-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。