使用钩子触发进程

Posted

技术标签:

【中文标题】使用钩子触发进程【英文标题】:Using hooks to trigger a process 【发布时间】:2014-09-02 19:02:11 【问题描述】:

我正在尝试弄清楚如何使用 Hooks,但似乎无法正确获取语法。

我使用 PirahnaCMS 建立了一个网站,其中包含一个博客组件,并且正在扩展它以调用一些社交插件并自动发布到 FB、Twitter 等。

不过,我似乎无法使语法正确。我的应用是 MVC,我已经看过这个部分

1.2 ASP.NET MVC

如果您使用的是 ASP.NET MVC 挂钩,则应在 Application_Start 方法中的 Global.asax.cs 中或您保存启动代码的任何其他位置附加。您使用以下语法附加挂钩:

protected void Application_Start() 


  Piranha.WebPages.Hooks.Menu.RenderItemLink = (ui, str, title, url) => 
    str.Append(String.Format("<span><a href=\"0\">1</a></span>", url, title)) ;  
   ;
 

我认为我想使用的 Hook 是 Piranha.WebPages.Hooks.Manager.PostEditModelAfterSave 但我这辈子似乎无法解决。

【问题讨论】:

【参考方案1】:

所有的钩子都是你可以附加方法的静态委托。在上面的例子中,一个匿名方法被分配给了钩子,语法如下:

delegate += (parameters) =>  method body 

你也可以分配一个先前声明的方法。

delegate += MyMethod

官方网站的文档中应该提供附加钩子的示例骨架。如果没有,您可以在文件中找到挂钩:

~/WebPages/Hooks.cs

所有代表:

~/Delegates.cs

我希望这些 URL:s 是正确的,因为我是凭记忆输入的 :)

问候

【讨论】:

好吧,我的错。我试图使用 Hooks.Manager.PostEditModelAfterSave 委托,以便在保存帖子后采取一些措施。文档中列出的 Hook 确实按预期工作,并且我了解如何使用它们,我错误地假设我可以使用 Hooks.Manager 委托。当页面/帖子被更新/添加/删除时有可用的钩子会很好,但我现在会解决它。我会将其添加为 Git 上的功能请求。

以上是关于使用钩子触发进程的主要内容,如果未能解决你的问题,请参考以下文章

什么是钩子函数?钩子函数的使用。

React生命周期, setState、props改变触发的钩子函数

在 pre updateOne 钩子中设置 document: true, query: false,不会触发钩子

git钩子

Nest.js/Mongoose:为啥我的预保存钩子无法触发?

尽管状态发生了变化,但自定义钩子不会触发组件重新渲染