1

我需要根据各种场景设置图片管理器的路径和根路径。

同一用户可以使用图像管理器从不同页面上传图像。我想从客户端发送一个参数来指示场景。例如,如果用户在主页使用编辑器,则发送 home;同样,如果在联系我们页面中使用,请发送联系方式。我所能做的就是在初始化期间在客户端设置根路径。例如,imagemanager_rootpath: "test"。但是我的路径是根据我发送的参数在服务器端计算的。有没有办法做到这一点。

4

2 回答 2

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
});

希望有帮助!

于 2012-08-09T00:58:30.347 回答
0

目前,我找不到更好的方法来做到这一点。我最终创建了一个辅助方法,该方法接受一个指示资源类型的参数并确定根路径并设置 Session["imagemanager.filesystem.rootpath"] = "someRootPath"。在使用编辑器返回视图的控制器中,我调用了这个辅助方法。这几乎没有缺点。一是无论您是否使用图像管理器,都会预先调用辅助方法。我最初的方法是在单击图像管理器后设置路径。因此,如果视图中的编辑器不使用图像管理器,请不要调用辅助方法。这样做的第二个缺点是,如果您在同一个视图上有多个编辑器,但他们需要上传到不同的位置;这是不可能的。所有编辑器都使用会话中设置的相同根路径。同样,更好的方法是从每个编辑器向服务器发送一个值并设置根路径。使用多个位置的一种方法是获取所有位置并使用 magemanager_rootpath:“someRootPath”在 tinyMce 编辑器的 init() 中设置它们。但是,这样做的一个优点是,如果您的视图使用多个编辑器并且它们都使用该视图中的相同位置,则辅助方法仅被调用一次,而不是使用原始方法多次调用。因此,我将 Skurrier 的答案标记为正确,但如果您找到更好的方法,请发表评论。

于 2012-08-10T18:23:29.047 回答