Model view controller 如何使用目录中的映像路径为MVC视图提供服务?

Model view controller 如何使用目录中的映像路径为MVC视图提供服务?,model-view-controller,cakephp,file-handling,Model View Controller,Cakephp,File Handling,我对整个MVC概念有点陌生,因为我最近刚刚开始使用CakePHP框架开发一个网站。因此,我转向你们,询问如何以最佳实践方式实现以下目标 我希望能够在一个目录中放置一些图片,然后扫描其中的所有文件名。这些文件名随后应传递给任意视图,然后该视图通过所有文件名循环生成img标记 如果这可以用一种通用的方式来完成,那就太好了,这样我就可以为相同的任务重用代码,但使用不同的目录名 我已经尝试了以下两种方法。然而,出于某种原因,这些方法中没有一种感觉是最好的方法 使用$useTable=false创建模型

我对整个MVC概念有点陌生,因为我最近刚刚开始使用CakePHP框架开发一个网站。因此,我转向你们,询问如何以最佳实践方式实现以下目标

我希望能够在一个目录中放置一些图片,然后扫描其中的所有文件名。这些文件名随后应传递给任意视图,然后该视图通过所有文件名循环生成
img
标记

如果这可以用一种通用的方式来完成,那就太好了,这样我就可以为相同的任务重用代码,但使用不同的目录名

我已经尝试了以下两种方法。然而,出于某种原因,这些方法中没有一种感觉是最好的方法

  • 使用
    $useTable=false
    创建模型
  • 创建一个普通类并将其作为供应商导入

  • 实现上述目标的最佳方法是什么?

    我以前做过以下工作:创建一个例如ImageManager类,并将其作为IIImageManager传递给例如ImageController的构造函数,而不是传递存储库。然后ImageManager可以完成您提到的所有工作


    编辑:我是在.net mvc中做的,没有CakePHP的经验,但是我想有一个地方可以将IImageManager的具体实现注册为ImageManager,这样框架就会知道传递给控制器的构造函数的内容。我以前做过以下工作:创建一个例如ImageManager类,并将其作为IImageManager传递给例如ImageController的构造函数,而不是传递存储库。然后ImageManager可以完成您提到的所有工作

    编辑:我是在.net mvc中这样做的,没有CakePHP的经验,但我想有一个地方可以将IImageManager的具体实现注册为ImageManager,这样框架就会知道传递给控制器构造函数的内容。我会为此创建一个

    编辑:对于文件系统的拖网,请使用助手中的类

    为此,我将创建一个


    编辑:对于文件系统的拖网,请使用助手中的类

    我认为您最初的想法更好,使用模型遍历/读取/写入目录。将文件结构视为数据源。您可以使用$this->data将dirname传递给模型,然后让它使用来检索您需要的内容。这将使其在控制器之间可移植(使用)


    以后,如果您将图像路径移动到DB中,您只需重新写入模型即可将其考虑在内。

    我认为您最初的想法更好,使用模型遍历/读取/写入目录。将文件结构视为数据源。您可以使用$this->data将dirname传递给模型,然后让它使用来检索您需要的内容。这将使其在控制器之间可移植(使用)



    以后,如果您将图像路径移动到DB中,您只需重新编写模型即可将其考虑在内。

    这听起来确实是个不错的主意。然而,我并不确定如何在CakePHP中实现这一点,因为我只是一个cakebaker新手。有没有人能给出一个提示,在CakePHP中这是否可行,在这种情况下是如何实现的?这听起来确实是个不错的主意。然而,我并不确定如何在CakePHP中实现这一点,因为我只是一个cakebaker新手。有人能给一个提示,如果这在CakePHP中是可能的,在这种情况下是如何做到的?啊哈,这是一个有趣的建议;我一直认为视图(和助手)需要处理的逻辑太多了,但情况可能并非如此。我会仔细考虑这个方法,如果没有人反对,我可能会实施。我反对。我不认为视图帮助器是在文件系统中搜索逻辑的正确位置。要添加到我的评论中,帮助器可能会创建img标记,但不会获得文件名列表。好的,这证实了我一直在想的——谢谢!但问题仍然存在,扫描文件系统并提供文件路径的逻辑应该发生在哪里?它应该如何被传送到视图?希望我能帮助更多。我仍然认为我的回答为这种逻辑提供了一个合适的位置。然后文件名列表可以作为stringsAha的列表或数组传输到视图中,这是一个有趣的建议;我一直认为视图(和助手)需要处理的逻辑太多了,但情况可能并非如此。我会仔细考虑这个方法,如果没有人反对,我可能会实施。我反对。我不认为视图帮助器是在文件系统中搜索逻辑的正确位置。要添加到我的评论中,帮助器可能会创建img标记,但不会获得文件名列表。好的,这证实了我一直在想的——谢谢!但问题仍然存在,扫描文件系统并提供文件路径的逻辑应该发生在哪里?它应该如何被传送到视图?希望我能帮助更多。我仍然认为我的回答为这种逻辑提供了一个合适的位置。然后,文件名列表可以作为字符串列表或数组传输到视图中。很高兴您喜欢我自己的想法。:)不过,我有一点担心。我如何称呼这样一个模型,使其可用于多种用途(例如个人照片、赞助商徽标目录),而不打破模型名称为单数的CakePHP惯例?这是一个关于容易重构的观点,我想你会想要一些通用的东西,比如“图像”。我目前正在开发的一个应用程序中有一个图像模型。这应该足够了!如果我没有遇到任何问题,我会尝试一下,并将您的答案标记为已接受。谢谢我很高兴你喜欢我自己的想法。:)不过,我有一点担心。