Zend Framework - TinyMCE 中的集成疯狂文件管理器



我在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 框架返回异常: 消息:指定的控制器无效 (mfm.php)

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

如果控制器名为 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。每个请求都通过索引.php并通过Zend_Route路由到正确的控制器。

如果你使用的是Zend Framework,你的所有请求都通过应用程序的前端控制器,那就是index.phpindex.php解析此格式的请求 URL(控制器名称/操作名称?参数),并转发指定控制器指定操作的请求(这是默认行为)。在这种情况下,您应该有一个名为 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>

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

干杯,编码愉快!

最新更新