所有的DisplayObject必须直接添加到页面,所以除非你加入myaction.cfm到页面中,也不会被别人发现。
<cfinclude template="/#$.getPlugin('MyPluginPackageName').getDirectory()#/...">
通常你可以在一个开始分配$ .getPlugin(“MyPluginPackageName”)对象变量:
如果你真的需要,你可以使用得到你的插件的映射文件DisplayObject,以便您可以重复使用它,而无需重复调用该函数。
但是,这是而不是将您的“查看”文件映射到Mura Plugin中的最佳实践。
这样做的更多推荐方法是让相同的DisplayObject显示窗体并处理窗体结果。你可以用你的形式,有条件的,如:
<cfif StructKeyExists(form,"some_field_in_my_form")>
... action code
<cfelse>
... form code
</cfif>
...,以确定是否有形式尚未提交(如果你是做服务器端验证或类似的明显调整)。我建议的一件事是你不使用StructCount(“表单”)或类似的,因为页面上可能有其他表单已经提交。
如果你想分离你的代码,以保持它更有组织,只需使用你的DisplayObject作为容器,并使用包含/函数调用/等。
Display Object: [your plugin folder]/displayObjects/myform.cfm
<cfif StructKeyExists(form,"some_field_in_my_form")>
<cfinclude template="./inc/myaction.cfm"> <!--- [your plugin folder]/displayObjects/inc/myaction.cfm --->
<cfelse>
<cfinclude template="./inc/myinput.cfm"> <!--- [your plugin folder]/displayObjects/inc/myinput.cfm --->
</cfif>
如果你真的有决心有两个显示对象,你就必须要么一)他们都分配给同村的内容页,但用条件来包装他们,以确保它们只出现在适当的范围内,或b)将它们分配到不同的Mura页面,并将表单发布到包含myaction.cfm显示对象的Mura页面。
最后,我建议检查一下FW/1样本插件https://github.com/blueriver/MuraFW1 ...一旦你获得了FW/1(最简单的CFML框架来学习)的窍门,它将使建立你的插件变得更加容易。
太棒了。非常感谢您的帮助。彼得 – Peter