CakePHP-jquerymobile返回包含单词“quot;“未定义”;

CakePHP-jquerymobile返回包含单词“quot;“未定义”;,jquery,cakephp,mobile,Jquery,Cakephp,Mobile,我试图在JQM中编写一个蛋糕网站,但每当我点击一个链接时,屏幕就会切换到一个只包含单词“Undefined”的页面 检查源代码可以发现,有一个新的div,其中data role=“page”包含这个单词,并且我的旧页面的原始内容保持不变 这是我的移动视图布局: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title&

我试图在JQM中编写一个蛋糕网站,但每当我点击一个链接时,屏幕就会切换到一个只包含单词“Undefined”的页面

检查源代码可以发现,有一个新的div,其中data role=“page”包含这个单词,并且我的旧页面的原始内容保持不变

这是我的移动视图布局:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title><?php echo (isset($title_for_layout)) ? $title_for_layout : 'My default title';?></title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <?php
            // javascript
            $javascripts = array(
                    'jquery',
                    'jquery.mobile-1.0.min.js',
                );
            echo $this->Html->script($javascripts);
            // css
            $css = array('jquery.mobile-1.0.css','jquery.mobile.structure-1.0.css','themes/mobires.css');
            echo $this->Html->css($css) . "\n\t";
        ?>
    </head>
    <body>
        <div data-role="page">
            <?php echo $this->Session->flash(); ?>
            <div data-role="header">
                <h1>
                    <?php echo (isset($title_for_layout)) ? $title_for_layout : 'My default title';?>
                </h1>
                 <div data-role="navbar">
                    <ul>
                        <li><?php echo $this->Html->link('Home',array('controller'=>'pages','action'=>'display','home'))?></li>
                        <li><?php echo $this->Html->link('Contact',array('controller'=>'pages','action'=>'display','contact'))?></li>
                    </ul>
                </div><!-- /navbar -->
            </div><!-- /header -->
            <div data-role="content">
                <?php
                    echo $this->Session->flash();
                    echo $content_for_layout;
                ?>
            </div>
            <!-- start footer -->
                <div data-role="footer">
                    &copy; 2012<?php if ( date("Y") > 2012 ) { echo '-' . date("Y"); } ?> Mobires.  All Rights Reserved.
                    <br />
                    &nbsp;
                    <?php echo $this->Html->link('Privacy Policy',array('controller'=>'pages','action'=>'display','privacy'))?>
                    &nbsp;
                    <?php echo $this->Html->link('Terms & Conditions',array('controller'=>'pages','action'=>'display','terms'))?>

                </div>
        </div><!-- /page -->
        <?php echo $this->Js->writebuffer(); ?>
    </body>
</html>

&抄袭;2012年Mobires。版权所有。

而我的home.ctp里面只有“test”这个词。我试图单击页脚中的按钮来测试Ajax加载。

啊,JQM需要一个完全格式化的JQM响应,因此必须返回整个“页面”部分,而不仅仅是内容。

如果您想将cakephp与jquery mobile集成,我认为这是最好的解决方案。还解决了cakephp 2.x上遗漏的空页。您还可以看到一个示例,说明如何使用拐点::下划线($this->action)在cakephp控制器中获取视图文件(渲染文件)的名称

public function beforeFilter() {
$this->isMobile = false;
        if ($this->RequestHandler->isMobile()) {

            // required for CakePHP 2.2.2
            $viewDir = App::path('View');
            // returns an array
            /*
             * array(
             *      (int) 0 => '/var/www/maps-cakephp2/app/View/'
             * ) 
             */
             //path to your folder for mobile views . You must modify these lines that you want
             //in my case I have views in folders in to /app/view/mobile and here users folder etc.
            $mobileView = $viewDir[0] .
                    'mobile' . DS . $this->name . DS;
            $mobileViewFile = $mobileView .
                    Inflector::underscore($this->action) . '.ctp';

            if (file_exists($mobileViewFile)) {
                $this->isMobile = true;
                $this->viewPath = 'mobile' . DS . $this->name;

            }

    }
}

public function beforeRender() {
    if ($this->isMobile == true) {
        $this->autorender = true;
        //app/View/Layouts/mobile.ctp
        $this->layout = 'mobile';
    }
}

嗨,安迪。我也有同样的问题。。。您是如何在CakePHP中获得完全格式化的JQM响应的???好的,我在这里找到了解决方案:我只是添加了$content_for_布局中缺少的JQM响应位,方法是声明在我的内容前后输出的“header”和“footer”元素。如何关闭请求处理程序?我在我的AppController::beforeFilter()-函数$this->RequestHandler->enabled=false中设置<代码>类AppController扩展控制器{var$components=array('RequestHandler');函数beforeFilter(){if($this->RequestHandler->isMobile()){$this->RequestHandler->enabled=false//set special mobile rules here}}}您还可以在cakephp中为视图使用新的主题功能