phalcon——调度控制器
将侦听者绑定到组件上:
use Phalcon\Mvc\Dispatcher as MvcDispatcher,
Phalcon\Events\Manager as EventsManager;
$di->set('dispatcher', function () {
// 创建一个事件管理
$eventsManager = new EventsManager();
// 为“dispatch”类型附上一个侦听者
$eventsManager->attach("dispatch", function ($event, $dispatcher) {
// ...
});
$dispatcher = new MvcDispatcher();
// 将$eventsManager绑定到视图组件
$dispatcher->setEventsManager($eventsManager);
return $dispatcher;
}, true);
一个实例化的控制器会自动作为事件调度的侦听者,所以你可以实现回调函数:
class PostsController extends \Phalcon\Mvc\Controller
{
public function beforeExecuteRoute($dispatcher)
{
// 在每一个找到的动作前执行
}
public function afterExecuteRoute($dispatcher)
{
// 在每一个找到的动作后执行
}
}
转发执行流到另一个控制器/动作:
$this->dispatcher->forward(array(
"controller" => "post",
"action" => "index"
));
$this->dispatcher->forward(array(
"action" => "search",
"params" => array(1, 2, 3)
));
(默认情况下,传递的参数会按URL传递的顺序传给对应的动作,你可以简单的调整你的应用来匹配你想要的URL格式)
获取参数:
获取全部参数:
$params = $this->dispatcher->getParams(); //获取到的是一个数组
获取指定参数:
$content = $this->dispatcher->getParam('content'); //获取到的是一个参数值
利用合适的调度循环事件,你还可以做:
URL调整 转换动作名
删除遗留的扩展名 注入模型实例
处理Not-Found错误
注意:
制造一个“forward”并不等同于制造一个HTTP的重定向。尽管这两者表面上最终效果都一样。 “forward”不会重新加载当前页面,全部的重定向都只发生在一个请求里面,而HTTP重定向则需要两次请求 才能完成这个流程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)