我正在尝试结合使用CakePhp和JQuery Mobile。一般来说,它工作得很好,但是使用从一个控制器重定向到另一个控制器时遇到了一个巨大的问题。
自从我添加了请求处理程序以来,在空间上。
我认为在这种情况下的问题是,Jquery Mobile期望整个页面字符串,但控制器只是返回视图。
有没有办法让重定向功能在jquery移动中工作?
在这种情况下,我喜欢从订单头重定向到订单位置
控制器订单头
if ($this->request->is ( 'post' )) {
$this->Orderhead->create ();
if ($this->Orderhead->saveAll ( $this->request->data,array (
'deep' => true
))) {
$orderId = $this->Orderhead->findByOrdernumber( $this->request->data['Orderhead']['ordernumber']);
$id =$orderId['Orderhead']['id'];
$this->Session->setFlash ( __ ( 'The orderhead has been saved.' ) );
return $this->redirect ( array (
'controller' => 'orderpositions',
'action' => 'add', $id
) );
} else {
$this->Session->setFlash ( __ ( 'The orderhead could not be saved. Please, try again.' ) );
}
}
控制器顺序位置
public $components = array (
'Paginator',
'Session',
'RequestHandler'
);
public function add($id = null) {
if ($this->request->is ( 'ajax' )) {
if ($this->RequestHandler->isAjax ()) {
Configure::write ( 'debug', 0 );
}
if (! empty ( $this->data )) {
$this->autoRender = false;
$this->Orderposition->create ();
if ($this->Orderposition->save ( $this->request->data )) {
echo 'Record has been added';
} else {
echo 'Error while adding record';
}
}
} else {
$this->loadModel ( 'Orderhead' );
if ($this->Orderhead->exists ( $id )) {
$orderInformation = $this->Orderhead->findById ( $id );
} else {
throw new NotFoundException ( __ ( 'Invalid order id does not exists' ) );
}
$this->set ( compact ( 'orderInformation' ) );
}
}
我自己解决了这个问题。
我是怎么想的,问题出在JQuery移动网站上。JQuery Mobile通常使用Ajax进行链接。
这是或者更好地说是问题,结合蛋糕php flowconzept,它不起作用。因为Jquery总是期待整个页面(信息(。这正是我所有带有选项 rel='external' 的链接都完美工作的原因。
顺便说一句。这个行为就是为什么你需要jQuery-Mobile-Subpage-Widget来使用多页。
但是回到主题,为了解决控制器>重定向函数的问题,我只需要将 Data-Ajax='false' 选项添加到 cakephp Form-Create 函数的选项参数中。
如果设置该参数,链接将设置整页请求而不是 ajax 请求。
例:
<?php
echo $this->Form->create('Contactperson', array(
'data-ajax' => 'false'));
echo $this->Form->input('name');
echo $this->Form->input('surname');
echo $this->Form->input('email');
echo $this->Form->end(__('Submit'));
?>
我希望这可以帮助任何其他有同样问题的人,我他妈的浪费了很多时间。