загружать различные файлы просмотра при переключении URL - PullRequest
3 голосов
/ 20 июня 2019

Я хотел бы создать приложение Nextcloud и следовать этому уроку

https://docs.nextcloud.com/server/16/developer_manual/app/intro.html


После создания скелета приложения я добавил несколько маршрутов в rout.php

<?php
return [
    'routes' => [
       ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
       ['name' => 'test#index', 'url' => '/test/:value', 'verb' => 'GET'],
       ['name' => 'user#index', 'url' => '/user', 'verb' => 'GET']
    ]
];

Я создал несколько контроллеров, следуя этому руководству

https://docs.nextcloud.com/server/16/developer_manual/app/requests/controllers.html

Мой PageController.php предоставляет индексtemplate

public function index() {
    return new TemplateResponse('demoappct', 'index');  // templates/index.php
}

TestController.php доставляет тестовый шаблон

public function index() {
    return new TemplateResponse('demoappct', 'test');  // templates/test.php
}

, а UserController.php доставляет пользовательский шаблон.


Я расширил navbar.php этими маршрутами

<ul>
    <li>
        <a href="#/">
            Main page
        </a>
    </li>
    <li>
        Header for grouped links
    </li>
    <li>
        <ul>
            <li>
                <a href="#/test/12345">
                    Route with param
                </a>
            </li>
            <li>
                <a href="#/user">
                    User Info
                </a>
            </li>
        </ul>
    </li>
</ul>

В папке шаблонов, где index.php это я добавил файлы просмотра test.php и user.php .

Я изменил сгенерированный index.php на

<?php
script('demoappct', 'index');
style('demoappct', 'base');
?>

<div id="app">
    <div id="app-navigation">
        <?php print_unescaped($this->inc('nav')); ?>
        <?php print_unescaped($this->inc('settings')); ?>
    </div>

    <div id="app-content">
        <div id="app-content-wrapper">
            <?php print_unescaped($this->inc('index/content')); ?>
        </div>
    </div>
</div>

Пожалуйста, посмотрите на $this->inc('index/content').Я создал файл content.php для каждого файла представления.

Так что test.php будет вызывать

<?php print_unescaped($this->inc('test/content')); ?>

и user.php будет вызывать

<?php print_unescaped($this->inc('user/content')); ?>

Эти файлы содержимого в настоящее время пусты.Они содержат только что-то вроде

<h1>Test Page</h1>

Когда я тестирую свое приложение и нажимаю на навигационную ссылку, маршрутизация не работает.URL изменяется, но отображается только мой индексный файл.

Я думал, что когда вызывается этот маршрут 'page#test', в папке шаблонов есть ссылка на файл представления.

Чего мне не хватает?

...