我需要根据各种场景设置图像管理器的路径和根路径。
相同的用户可以使用图像管理器上传不同页面的图像。我想从客户端发送一个参数来指示方案。例如,如果用户在主页中使用编辑器,则发送回家;同样,如果使用联系我们页面发送联系人。我所能做的就是在init期间在客户端设置根路径。例如,imagemanager_rootpath:" test"。但我的路径是根据我发送的参数在服务器端计算的。有没有办法做到这一点。
答案 0 :(得分:0)
据我所知,您有两个选择:
1:从服务器上的模板生成Javascript(比如说使用Smarty或等效的)并将正确的根路径插入到TinyMCE初始化代码中。
因此,在PHP中,您可能会得到类似的结果:
<?php
$root_path = get_root_path();
?>
// Other javascript goes here
tinymceInstance = tinyMce.init({
//parameters
imagemanager_rootpath: "<?php echo $root_path ?>"
});
2:生成一个Javascript参数文件,其中包含您希望Javascript具有的所有参数,然后在初始化tinyMCE实例时使用它。
参数文件:
<?php
echo "window.serverParameters = ".json_encode(array("imageRoot" => get_root_path()));
?>
HTML:
<html>
<head>
<script src="serverParameters.php" type="text/javascript" />
</head>
</html>
使用Javascript:
tinymceInstance = tinyMce.init({
//parameters
imagemanager_rootpath: window.serverParameters.imageRoot
});
希望有所帮助!
答案 1 :(得分:0)
目前,我找不到更好的方法来做到这一点。我最终创建了一个辅助方法,它接受一个指示资源类型的参数并确定根路径并设置Session [“imagemanager.filesystem.rootpath”] =“someRootPath”。在使用编辑器返回视图的控制器中,我调用此辅助方法。这有几个缺点。一种是无论您使用图像管理器,都会预先调用辅助方法。我最初的方法是在单击图像管理器后设置路径。因此,如果视图中的编辑器不使用图像管理器,请不要调用辅助方法。第二个缺点是,如果您在同一视图上有多个编辑器,但他们需要上传到不同的位置;这是不可能的。所有编辑器都使用会话中设置的相同根路径。同样,更好的方法是从每个编辑器向服务器发送一个值并设置根路径。使用多个位置的一种方法是获取所有位置,并使用magemanager_rootpath:“someRootPath”将它们设置在tinyMce编辑器的init()中。 但是,这样做的一个优点是,如果您的视图使用多个编辑器并且它们都在该视图中使用相同的位置,则只使用原始方法调用辅助方法一次而不是多次。 因此,我将Skurrier的答案标记为正确,但如果您找到更好的方法,请留下评论。