Model view controller CFWheels-过滤器和x27问题;除了';。冲突的操作名称

Model view controller CFWheels-过滤器和x27问题;除了';。冲突的操作名称,model-view-controller,coldfusion,railo,cfwheels,Model View Controller,Coldfusion,Railo,Cfwheels,我有一个过滤器设置,它运行一个函数,检查用户会话是否出现在某些操作上,例如: <cffunction name="init"> <cfset filters(through="checkLogin", except="login,register,signin,create,home,profile") /> </cffunction> 问题是,这些是动作名称…与我拥有的其他控制器冲突 例如,我有两个控制器“用户”和“链接”。

我有一个过滤器设置,它运行一个函数,检查用户会话是否出现在某些操作上,例如:

<cffunction name="init">

        <cfset filters(through="checkLogin", except="login,register,signin,create,home,profile") />

    </cffunction>

问题是,这些是动作名称…与我拥有的其他控制器冲突

例如,我有两个控制器“用户”和“链接”。其中每个都有一个名为“创建”的操作,因此我的URL如下所示:

/用户/创建/ /链接/创建/

过滤器如何知道与哪个控制器关联?有没有办法在“except”子句中的某些“actions”前面加上控制器名称

例如,可能类似于:

<cffunction name="init">

        <cfset filters(through="checkLogin", except="user/login,user/register,user/signin,link/create,main/home,user/profile") />

    </cffunction>

我记得我试过这个,但没用就坏了

希望你明白我在说什么。我不想把每一个动作都命名为完全唯一的名称

谢谢,
Michael。

您可以使用基本继承来完成以下任务:

<!--- controllers/Controller.cfc --->
<cffunction name="init">
    <cfargument name="checkLoginExcept" type="string" required="false" default="">

    <cfset filters(through="checkLogin", except=arguments.checkLoginExcept)>
</cffunction>
如果另一个子系统总是希望运行
checkLogin
,则它不应传递
checkLoginExcept
的值:

<!--- controllers/Foo.cfc --->
<cffunction name="init">
    <cfset super.init()>
</cffunction>

谢谢-这正是我想要的!我从来没有想过CFC的整个继承方面……这是一个很好的建议。
<!--- controllers/Foo.cfc --->
<cffunction name="init">
    <cfset super.init()>
</cffunction>