- 创建应用example,应用目录apps/example,目录结构如下
example/appinfo:包含应用元数据和配置
example/css :包含CSS
example/img :包含图标和图像
example/js :包含JavaScript文件
example/lib :包含应用程序的PHP类文件
example/templates :包含模板
example/tests :包含测试 -
创建元数据配置文件
参考网址:
https://docs.nextcloud.com/server/14/developer_manual/app/init.html https://docs.nextcloud.com/server/14/developer_manual/app/info.html
创建文件example/appinfo/info.xml
<?xml version="1.0"?> <info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd"> <id>example</id> <name>Example</name> <summary>Example summary</summary> <description>Example description</description> <version>1.0.0</version> <licence>agpl</licence> <author>Author</author> <category>multimedia</category> <bugs>https://github.com/nextcloud/news/issues</bugs> <dependencies> <nextcloud min-version="10"/> </dependencies> <!--navigation 应用程序的导航条目--> <navigation> <name>example</name> <route>example.index</route> <order>0</order> </navigation> </info>
这样应用安装目录就可以看到example应用了
- 创建控制器 example/lib/Controller/ExampleController.php
https://docs.nextcloud.com/se...
<?php
namespace OCA\Example\Controller;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
class ExampleController extends Controller {
public function __construct(string $appName, IRequest $request){
parent::__construct($appName, $request);
}
/**
* @NoCSRFRequired
*
* @return DataResponse
*/
public function index() {
return new DataResponse([
'test'
]);
}
}
控制器函数注解的用处:
```
/**
* @PublicPage 公共界面
* @NoCSRFRequired 不做csrf校验
* @NoAdminRequired 不知道做啥 猜吧
* @return DataResponse
*/
```
- 创建example/lib/AppInfo/Application.php 为了拥有更清晰的代码结构
<?php
namespace OCA\Example\AppInfo;
use OCP\AppFramework\App;
use \OCP\IContainer;
use OCA\Example\Controller\ExampleController;
class Application extends App {
public function __construct(array $urlParams=array()){
parent::__construct('example', $urlParams);
}
public function register(){
$container = $this->getContainer();
/**
* Controllers
*/
$container->registerService('Example', function(IContainer $c) {
return new ExampleController(
$c->query('AppName'),
$c->query('Request')
);
});
}
}
-
创建应用加载和执行文件
创建文件example/appinfo/app.php<?php $app = new \OCA\Example\AppInfo\Application(); $app->register();
-
创建路由
example/appinfo/routes.php<?php return [ 'routes' => [ ['name' => 'example#index', 'url' => '/', 'verb' => 'GET'] ] ];
- 创建视图
待续
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。