【问题标题】:How do I use jquery with zend framework, without using zendx?如何在不使用 zendx 的情况下将 jquery 与 zend 框架一起使用?
【发布时间】:2011-11-11 09:09:54
【问题描述】:

我在布局文件中试过这个

$(document).ready(function(){ 警报(“你好”); } );

如何让这个简单的事情发挥作用?我在布局文件中包含了 jquery,使用 echo $this->headScript()->appendFile(....)

有没有办法按原样使用 jquery?不用zendx?

【问题讨论】:

  • 为什么不为 javascript 使用单独的文件?
  • 你不需要使用 ZendX,你能提供代码来展示你是如何尝试的吗?
  • 我在布局文件中包含了 jquery,使用的是 headScript()->appendFile(..)。在布局文件中,在头标签中,在脚本标签内,我放置了上面的代码(准备好文档内的警报)。我究竟做错了什么? :(

标签: php jquery zend-framework


【解决方案1】:

布局文件中的以下内容如何:

$this->headScript()->appendFile('/js/jquery.js'); 
$this->headScript()->appendScript('$(document).ready(function() { alert("hello"); });','text/javascript');

我主要做的是:

$this->headScript()->appendFile('/js/jquery.js');
$this->headScript()->appendFile('/js/application.js');
$this->headScript()->appendScript('application.init();', 'text/javascript');

echo $this->headScript();

然后是application.js:

var application = {
  init : function() {
    //do here anything you like
  }
}

如果你想从你的控制器中调用一个特定的函数,你首先将这个函数添加到你的应用程序 JS 中:

var application = {
  init : function() {
    //do here anything you like
  },
  bindChangeEventToSomething : function() {
    $('a').click(function() {});
  }
}

然后在你的控制器中你可以添加你的动作:

$this->view->headScript->appendScript(
   'application.bindChangeEventToSomething()',
   'text/javascript'
);

【讨论】:

  • 哇,成功了。这是最好的方法吗?这是否意味着我不能在
  • 另外,如果我只需要在特定视图上执行一些 JS 函数怎么办?这也是方法吗?
  • 好的,谢谢。如何在我的个人控制器中调用 init 函数?在初始化函数中?
  • 不应该在布局中调用一次 init 函数。此函数将所有内容绑定到页面上的特定元素。你可以在绑定任何东西之前测试一个元素是否存在。您可以将 application.js 用于一般用途,并为每个控制器创建一个 controllername.js 文件,并使用 application = { ... } 执行与上面几乎相同的操作。我的 application.js 示例:pastebin.com/c3QvC5Hb
【解决方案2】:

您应该能够在不使用 ZendX 的情况下包含 jQuery。 如果您希望它包含在每个页面中,请将其添加到引导程序或控制器中(如果它是特定的)。 这是将其放入引导程序的示例:

protected function _initView(){
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();
    $view->headScript()->appendFile('/js/jquery.min.js');
}

如果您希望在单个控制器/动作中包含一个 js 文件,您可以将它包含在控制器的初始化/动作中。

$this->view->headScript()->appendFile('/js/index.js');

【讨论】:

  • 是的,那部分很好,我做到了。但我不确定它是否正确包含它,因为我在文档就绪中的警报不起作用。 js文件的路径是正确的。
  • 如果它正确地包含在引导程序或控制器中,您应该会在页面头部看到它,您不需要在布局中回显。
猜你喜欢
  • 2011-03-11
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
相关资源
最近更新 更多