通常Yii2用来写web应用,非常轻松,无论从思想上,和易用性上,都是非常理想的选择。
但于在写web框架时,不需要考虑将controller和action作为参数来提交,而是直接写在URL地址中,使用get方式去请求得到响应,使用场景就比较限制。
因为controller 和 action会一直变化,app客户端又希望可以将url中不变的部分,单独抽离出来放到底层方法里,所以就有可能要将controller或action本身作为参数来get或者post请求。
注意,通常所说Yii2由于Csrf限制不能post指的是action中的post,而实际上,往action中post参数是非常容易实现的。本文中提到的post,是post控制器ID 和 action 的ID给框架的入口文件。
本文提供两种思路:
一、通过修改路由解析和生成规则
由于Yii2框架的入口文件 web\index.php 只做了 生成Application和利用配置参数调用其run方法两个步骤,入口文件本身没有任何接收参数的操作,之后将url地址交给路由解析来查找对应的controller和action。因此,要想通过post来获取controller和action就需要修改底层路由规则。
这里有相关深入的源码解析,本文不做赘述:Yii2路由
二、自己手写一个入口文件,再交给Yii来处理
这个方法相对来说,思路清晰,操作