我正在使用PHP中的Ubiquity Framework设置一个小型应用程序,并且试图禁用默认路由系统(controller/action/parameters
)。
路由系统基于注释(已记录here)。
我有一个带有一些路由的控制器,该路由可以正常工作(不要忘记重置路由器缓存)。
namespace controllers;
class FooController extends ControllerBase
{
/**
* @get("foo")
*/
public function index()
{
echo "I'm on /foo";
}
/**
* @get("bar/{p}")
*/
public function bar($p='default p')
{
echo "I'm on bar/".$p;
}
}
地址 / foo , / bar 和 / bar / xxx 是可访问的,但是我想禁用默认的路由系统允许访问现有控制器的操作(无路由)。
我要禁用以下网址:
我在文档中找不到答案。
我知道该框架是未知的(我是通过phpbenchmarks网站发现的),但是路由系统非常经典,并且仍然是php。
如果您有任何想法......
版本:
答案 0 :(得分:0)
我在文档中间接找到了一个解决方案。
路由的public class My_Controller {
@AuraEnabled
public static Decimal getRate(String currFrom, String currTo) {
Decimal value = 1.067773;
return value;
}
}
<aura:component controller="My_Controller">
<lightning:input type="string" name="res" aura:id="res" value= "
{!c.My_Controller.getRate('A', 'B')}" label="Result"/>
属性允许您分配定义(并因此被请求)的顺序。
要在现有控制器上禁用动作调用,因此可以在最后一个位置定义返回404错误的通用路由。
priority
如果我们仍然想激活某些控制器(例如Admin部分),则必须添加namespace controllers;
use Ubiquity\utils\http\UResponse;
class FooController extends ControllerBase
{
...
/**
* @route("{url}","priority"=>-1000)
*/
public function route404($url)
{
UResponse::setResponseCode(404);
echo "Page {$url} not found!";
}
}
属性,该属性允许指定正则表达式。
requirements
在这种情况下,唯一可访问的路由是使用注释定义的路由+对应于namespace controllers;
use Ubiquity\utils\http\UResponse;
class FooController extends ControllerBase
{
...
/**
* @route("{url}","priority"=>-1000,"requirements"=>["url"=>"(?!(a|A)dmin).*?"])
*/
public function route404($url)
{
UResponse::setResponseCode(404);
echo "Page {$url} not found!";
}
}
控制器动作的路由
遇到路由问题,请提供路由解决方案。