2

我对 TinyMCE 中的 Mad File Manager 集成有疑问。我认为问题出在这段代码中:

<script type="text/javascript">
    function MadFileBrowser(field_name, url, type, win) {
      tinyMCE.activeEditor.windowManager.open({
          file : "mfm.php?field=" + field_name + "&url=" + url + "",
      }, {
          window : win,
          input : field_name
      });
      return false;
    }
</script>

file : "mfm.php?field=" + field_name + "&url=" + url + ""

因为 Zend Framework 返回异常:消息:指定的控制器无效 (mfm.php)

Request Parameters:
array (
  'controller' => 'mfm.php',
  'action' => 'index',
  'module' => 'default',
  'field' => 'src',
  'url' => '',
)
4

2 回答 2

1

如果控制器名为 MfmController.php 你应该这样做:

<script type="text/javascript">
    function MadFileBrowser(field_name, url, type, win) {
      tinyMCE.activeEditor.windowManager.open({
          file : "/mfm?field=" + field_name + "&url=" + url + "",
      }, {
          window : win,
          input : field_name
      });
      return false;
    }
</script>

在 zend 框架中,您永远不会直接调用 .php。每个请求都通过 index.php 并由 Zend_Route 路由到正确的控制器。

于 2012-12-04T17:11:07.200 回答
1

如果您使用 Zend Framework,您的所有请求都通过应用程序的前端控制器,即index.php. index.php解析您的这种格式的请求 url (controllername/actionname?param) 并转发您指定控制器的指定操作的请求(这是默认行为)。对于这种情况,您应该有一个名为的控制器controllernameController和一个名为actionnameAction. 这就是为什么

<script type="text/javascript">
function MadFileBrowser(field_name, url, type, win) {
  tinyMCE.activeEditor.windowManager.open({
      file : "mfm.php?field=" + field_name + "&url=" + url + "",
  }, {
      window : win,
      input : field_name
  });
  return false;
}
</script>

应该

 <script type="text/javascript">
function MadFileBrowser(field_name, url, type, win) {
  tinyMCE.activeEditor.windowManager.open({
      file : "mfm?field=" + field_name + "&url=" + url + "",
  }, {
      window : win,
      input : field_name
  });
  return false;
}
</script>

并且您应该有一个以方法命名的控制器mfmControllerindexAction处理您的请求(如果未提及任何操作,则默认执行 indexAction)。

干杯和快乐的编码!

于 2012-12-04T17:49:47.100 回答