切换网址时加载不同的视图文件

时间:2019-06-20 14:57:37

标签: php nextcloud

我想创建一个Nextcloud应用并遵循本教程

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


创建应用程序框架后,我向 routes.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 提供了索引模板

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>

当我测试我的应用并单击导航链接时,路由无效。网址发生变化,但只有我的索引文件被渲染。

我认为,调用此路由'page#test'时,会在template文件夹中引用视图文件。

我想念什么?

0 个答案:

没有答案