2011-03-31 3 views
0

저는 Kohana를 처음 접했고 응용 프로그램/클래스/컨트롤러 디렉토리에서 많은 파일을 구성하는 것이 가장 좋은 방법인지 궁금합니다.Kohana 3 : 응용 프로그램/클래스/컨트롤러에서 하위 디렉토리를 라우팅하는 방법

-application 
--classes 
---controller 
----page 
-----test.php 

그리고 페이지를 필요없이 URL에서 페이지를 호출하거나 다른 하위 디렉토리의 이름을 선택적으로 할 :

나의 현재 구조는

www.website.com/test/ 

내 컨트롤러 클래스 시작 :

<?php defined('SYSPATH') OR die('No direct access allowed.'); 

/** 
* Test 
* 
* @package Test 
* @category Page 
* @author 
* 
*/ 
class Controller_Page_Test extends Controller_Template { 

     // Default 
     public function action_index() { 
      // Template vars 
    } 

} 

404 오류가 발생하지 않도록하려면 어떻게해야합니까? bootstrap.php에 경로를 설정해야한다고 가정하지만 하위 디렉토리 내에서 페이지가 활성화되도록하기 위해 무엇을해야하는지 알지 못합니다.

미리 감사드립니다. 경로에서

답변

4

사용 directory PARAM은 :

Route::set('with_dir', 
      'test(/<action>(/<id>))', 
      ) 
    ->defaults(array(
      'directory' => 'page', 
      'controller' => 'test', 
    )); 

당신은 컨트롤러 목록을 정규식을 사용할 수 있습니다. 예를 들어, 페이지 디렉토리에 Controller_Test 및 Controller_Foo가 있습니다. 여기에 대한 경로입니다 :

Route::set('with_dir', 
      '<controller>(/<action>(/<id>))', 
      array(
       'controller' => '(test|foo)', 
      )) 
    ->defaults(array(
      'directory' => 'page', 
      'controller' => 'test', 
    )); 
+0

이것은 훨씬 더 가까이 가져옵니다, 감사합니다. :) 유일한 질문은 디렉토리 이름을 어떻게 선택적으로 만들 수 있습니까? 예제에서 디렉토리는 'page'여야합니다. – Das123

+0

URI에 ''값을 설정할 수 있습니다 (예 : ''또는 ''). 이렇게하면 URI가 더 커지고 간단하게/test /'됩니다. 또한 3.1 (및 PHPv5.3)에서는 route 매개 변수 설정을위한 많은 기능과 함께 [lambda routes] (http://kohanaframework.org/3.1/guide/kohana/routing#lambdacallback-route-logic)를 사용할 수 있습니다 . – biakaveron