我有一些分层数据,我已经组织在concrete5文件。我想知道是否可以通过其他应用程序(以API的方式)从concrete5网站外部访问filemanager。
这个网站让我对这个问题的答案充满了希望。不幸的是,没有后续教程。
http://c5hub.com/learning/building-rest-api-using-concrete5-part-1/
我的第二个问题非常相关:是否可以通过composer视图访问页面信息?
谢谢
发布于 2015-10-27 10:20:52
好的,我会给出一些我认为你需要的基本例子。如果你需要它来做一些更具体的事情,可以自由地给出任何反馈。
首先要做的是。创建一个包(仅仅因为它看起来很好,并且将所有的东西很好地捆绑在一起。
在包控制器中,创建一个名为`on_start()的公共函数。
现在决定一个URL结构。
我会做一个url前缀,让我们称之为api,只是为了让它清楚地表明您正在访问API。
在on_start()函数中,您将添加API,如下所示:
public function on_start() {
Route::register('/api/foo', 'Concrete\Package\*package-name*\*ClassName*::*function-1*');
Route::register('/api/bar', 'Concrete\Package\*package-name*\*ClassName*::*function-2*');
}以上假设包中有另一个类,名为ClassName,函数为function-1()和function-2()。
因此,无论何时访问//domain.abc/api/foo,ClassName中的function-1()都会被调用。
如果未启用漂亮的URL,则为//domain.abc/index.php/api/foo
但我希望能够将参数作为URL的一部分传递
别担心!您只需在路径中的某个地方添加{paramName}即可。像这样
Route::register('/api/foo/{paramName}', 'Concrete\Package\*package-name*\*ClassName*::*function-1*');然后在函数中添加相同的参数,使其成为function-1($paramName)。记住保持名字不变!
参数也可以位于url的中间,如/api/{paramName}/foo__。
目前,似乎没有一种方法可以直接在Concrete5中传递可选参数。因此,我建议您注册几个版本,有和没有可选参数。然而,在GitHub上还有一个悬而未决的问题:这里 作为可选参数的多个URL的替代方案,您可以通过请求中的
GET或POST变量获取这些URL。
但是我想和GET,POST,DELETE等做些性感的休息。
我以前没有这样做过,所以这就是我想要做的事情
对于应该以不同的方式执行()的URL (即GET和POST ),从调用相同的函数开始。然后,该函数将检查$_SERVER['REQUEST_METHOD']并重定向到精确的实函数。
例如,让我们看看function-2()。
function function-2() {
switch ($_SERVER['REQUEST_METHOD']) {
case 'PUT':
$this->function-2_put();
break;
case 'POST':
$this->function-2_post();
break;
case 'GET':
$this->function-2_get();
break;
case 'HEAD':
$this->function-2_head();
break;
case 'DELETE':
$this->function-2_delete();
break;
case 'OPTIONS':
$this->function-2_options();
break;
default:
$this->function-2_error();
break;
}
}当然,您只需要添加适用于特定情况的情况,并且可以默认为任何您想要的函数。
我希望这给了你一些洞察力,你可以与之合作。如果你需要更多的具体案件,请告诉我。
https://stackoverflow.com/questions/33336561
复制相似问题