0

私は2つのコントローラーを持っています。それらの最初のパスは controller/news.php で、2 番目は controller/admin/news.php です。各コントローラーのルートがあります。

controller/admin/news.php については、

Route::set('news-admin', 'admin/news(/)', array('start' => '\d+'))
    ->defaults(array(
        'directory' => 'admin',
        'controller' => 'news',
        'action' => 'index',
        'start' => 0,
    ));

controller/news.php の場合:

Route::set('news', 'news(/)', array('start' => '\d+'))
    ->defaults(array(
        'controller' => 'news',
        'action' => 'index',
        'start' => 0,
    ));

ブラウザを使用すると、すべて正常に動作します。私が電話すると

$response = Request::factory('/news')->execute()

unittest でルーティングし、テストを実行します。しかし、私が

$response = Request::factory('admin/news')->execute()

次のメッセージしか来ない

PHPUnit 3.7.8 by Sebastian Bergmann. 
Configuration read from /home/mydir/Projects/www/kohsite/application/tests/phpunit.xml

いくつかの実験の後、サブフォルダーに配置されたコントローラーの「ディレクトリ」がルートに含まれていることをテストできないことがわかりました。

以下に私のphpunit.xmlを示しました

<phpunit bootstrap="bootstrap.php" colors="true">
    <testsuite name="ApplicationTestSuite">
      <directory>./classes</directory>
    </testsuite>
    <filter>
        <whitelist>
            <directory suffix=".php">../tests</directory>
            <exclude>
                <directory suffix="*">../cache</directory>
                <directory suffix="*">../config</directory>
                <directory suffix="*">../logs</directory>
                <directory suffix=".php">../views</directory>
                <file>../bootstrap.php</file>
            </exclude>
        </whitelist>
    </filter>
</phpunit>
4

2 に答える 2

1

コハナ3.xを使用していると思いますか?アプリケーションの設定方法がわかりませんが、管理コントローラーを備えたサイトを設計する場合、通常、サブフォルダーにない管理コントローラーを作成します。デフォルトルートは、http://domain.com/admin/indexなどのhttp://domain.com/ <controller>/<action>/<id>へのすべてのリクエストを処理できます

管理者ニュース専用のコントローラーが必要な場合は、「admin」という名前のフォルダーを作成し、次のようにコントローラー定義を設定します。

class Controller_Admin_News extends Controller_Admin {

次に、bootstrap.phpに次のようなルートを記述します。

Route::set('admin_news', 'admin/news(/<action>(/<id>))')
    ->defaults(array(
        'controller' => 'admin_news',
        'action'     => 'index'
    ));

そのようにアプリを設定してみて、それが役立つかどうかを確認してください。

于 2012-10-23T05:55:34.320 に答える
0

もちろん、Kohana 3.2 を使用しています。私はコントローラーを持っています

class Controller_Admin_News extends Controller_Admin_Common
于 2012-10-23T12:23:39.870 に答える