首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp :在视图页上添加另一个视图页链接

Cakephp :在视图页上添加另一个视图页链接
EN

Stack Overflow用户
提问于 2013-07-18 03:07:13
回答 1查看 1.2K关注 0票数 0

很抱歉问了这个问题,..i正在开发一个Cakephp 2.x .我在我的控制器名文件夹中有一个视图页面,例如Controller/index.ctp .我有ajaxfile存储在app/webroot/ajax/ajaxfile.html中。

现在,在我的index.php文件中,我像这样访问ajax页面

代码语言:javascript
复制
                <a href="ajax-demo/ajaxfile.html" class="file-link">
                                    <span class="icon file-png"></span>
                                    Simple gallery</a>

控制器

代码语言:javascript
复制
       public function index(){


        }

现在的问题是我想把变量发送到我的两个页面..。index.ctp和ajaxfile ..。我怎么做??解决这些问题的最好方法是什么.

是否必须将ajaxfile从webroot移动并粘贴到控制器名称文件夹下?如果是这样,那么如何将变量发送到没有模型和控制器的ajax文件中?

如果有人知道解决方案,请告诉我。并给出一个例子

EN

回答 1

Stack Overflow用户

发布于 2013-07-18 05:01:51

实现这一点有不同的方法,这里我写的是最简单的一个

首先,您需要将"index.ctp“文件移动到”查看/控制器名称/“文件夹。

1)要访问视图中的变量,需要通过控制器的方法设置它,如下所示

代码语言:javascript
复制
public index(){
   $this->set('yourVariable', 'Your Value');
}

2)要访问视图文件(index.ctp)中的值,需要像这样调用这个变量

代码语言:javascript
复制
 $yourVariable;//If you want to print this then you can write like this 
 echo $yourVariable;

3)从index.ctp调用ajax文件最简单的方法是在这个锚上调用onclick事件,onclick事件将调用一个JAVASCRIPT方法,该方法将进一步进行ajax调用,并将输出放在index.ctp中的一个元素中,ajax调用将进一步调用您的控制器方法(在这里实现您的html相关逻辑)。

例如,

代码语言:javascript
复制
<a href="#" class="file-link" onclick="yourAjaxCallMethod('http://'.<?php echo $_SERVER['HTTP_HOST'].$this->webroot;?>.'yourController/ajaxMethod/'.<?php echo $yourVariable;?>)"><span class="icon file-png"></span>Simple gallery</a>

 <div id="yourAjaxFileOutputReplaceMentDiv"></div>

4)在JS文件中创建一个javascript方法,这个JS文件必须加载到布局文件中。

代码语言:javascript
复制
function yourAjaxCallMethod(BaseURL,yourVarible)
{
    //Initialize Ajax Method 
var req = getXMLHTTP();//Let's this method Initialize your Ajax 

if (req)
{
  req.onreadystatechange = function() {
  if (req.readyState == 4)
  { 
     if (req.status == 200)
     {
            document.getElementById('yourAjaxFileOutputReplaceMentDiv').innerHTML=req.responseText;
     } else {
     alert("There was a problem while using XMLHTTP:\n" + req.statusText);
     }
  }
    }           
 var URL = BaseURL+yourVarible+'/'+Math.random();       
 req.open("GET", URL, true);
 req.send(null);
}
}

5)控制器"yourController“中与AJAX文件相关的方法。将autoRender设置为False

代码语言:javascript
复制
public function ajaxMethod(){

 $this->autoRender = false;
 //Check $this->request['pass'] for arguments send from ajax call
 $retreivedVariable =  $this->request['pass'][0];
 echo 'I retrieved variable'.$retreivedVariable;     
}

但是,与编写核心javascript和ajax方法不同,您可以调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17713846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档