2010-09-20 2 views
1

Я много искал в Интернете, но я не мог найти никакого конкретного решения.
В CakePHP 1.3, отличном от 1.2, если у вас был контроллер внутри плагина, и у обоих было одно и то же имя, вы могли бы получить доступ к плагину «<» >/<action> », и он назовет« контроллер по умолчанию ». Но в 1.3, в соответствии с этим:CakePHP 1.3 Плагин Shortcut Route

http://cakeqs.org/eng/questions/view/setting_up_magic_routes_for_plugins_in_cakephp_1_3

Он был удален, и только «индекс» действия контроллера плагина по умолчанию можно получить таким образом.

Я думал о добавлении дополнительного кода в свой файл routes.php и прокручивал все плагины в своем приложении, создавая такие маршруты для каждого действия в контроллерах, названных после плагина, но это не похоже на то, что это правильно делать ...

любые другие предложения, чтобы сделать эту работу в 1.3? или, по крайней мере, очень конкретную кодовую документацию об этом конкретном изменении? Я уже кое-что в 1.3.0-RC4 annoucement читать, но это не было достаточно ясно ..

благодаря

ответ

0

Предполагая, что плагин под названием «тест», вы могли бы сделать что-то подобное в приложение/плагинов /test/controller/test_controller.php:

<?php 
class TestController 
    extends AppController 
{ 
    public function index() 
    { 
     // Is there any additional args passed to us? 
     if(count($this->passedArgs) > 0) 
     { 
      // Is this a request for one of our actions? 
      $actualAction = $this->passedArgs[0]; 
      if(is_callable(array($this, $actualAction))) 
      { 
       // Yup. Do it. 
       return call_user_func_array(array($this, $actualAction), array_slice($this->passedArgs, 1)); 
      } 
     } 

     // Default functionality here. 
     die("Index of plugin requested."); 
    } 

    public function another($param1, $param2) 
    { 
     die("{$param1}, {$param2}"); 
    } 
} 

Вы также должны добавить следующее приложение/Config/routes.php:

Router::connect("/test/*", array("plugin" => "test", "controller" => "test")); 

с этим сделать, запрос/тест/другой/один/два w неправильно выполните рендеринг «один, два» в браузере, а в запросе/тесте появится «Указатель запрашиваемого плагина».

Я думаю, что это неплохой путь, минимальная суета на стороне потребителя плагинов, лишь немного пух в код плагина.