- Create an application example, apply the directory apps/example, the directory structure is as follows
example/appinfo: Contains application metadata and configuration
example/css: Contains CSS
example/img: Contains icons and images
example/js: Contains JavaScript files
example/lib: PHP class file containing the application
example/templates: Contains templates
example/tests: Includes tests -
Create metadata profiles
Reference website:
https://docs.nextcloud.com/server/14/developer_manual/app/init.html https://docs.nextcloud.com/server/14/developer_manual/app/info.html
Create the file 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 entries for applications--> <navigation> <name>example</name> <route>example.index</route> <order>0</order> </navigation> </info>
So you can see the example application in the application installation directory.
-
Create controller 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); } /**
* * @return DataResponse */ public function index() { return new DataResponse([ 'test' ]); } } ``` Uses of Controller Function Annotations: ``` /** *@PublicPage public interface * @NoCSRFRequired does not do csrf checking * @NoAdminRequired don't know what to guess * @return DataResponse */ ```
-
Create example/lib/AppInfo/Application.php to have a clearer code structure
<?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(); /**
*/ $container->registerService('Example', function(IContainer $c) { return new ExampleController( $c->query('AppName'), $c->query('Request') ); }); } } ```
-
Create application load and execution files
Create the file example/appinfo/app.php<?php $app = new \OCA\Example\AppInfo\Application(); $app->register();
-
Create routing
example/appinfo/routes.php<?php return [ 'routes' => [ ['name' => 'example#index', 'url' => '/', 'verb' => 'GET'] ] ];
- Create view
To be continued