Caching plugin and normal controllers with duplicate names

前端 未结 3 1891
甜味超标
甜味超标 2021-01-27 12:28

I\'m running into a problem related to caching, plugins and duplicate model names in Cake 2.0. My application has several controllers containing only actions for public use (vie

相关标签:
3条回答
  • 2021-01-27 13:05

    Are there conflicting routes between the main app and the plugin? This sounds like you may need to create a route for your /posts and another for /admin/posts in your main app. This should override the routes from the plugin causing any conflict. Of course, clear your cache before trying the change.

    //main app posts route
    Router::connect(
        '/posts',
        array(
            'controller' => 'Posts'
            'action' => 'index'
        )
    );
    
    //plugin posts route
    Router::connect(
        '/admin/posts',
        array(
            'controller' => 'Posts'
            'action' => 'index',
            'plugin' => 'CmsPlugin'
        )
    );
    
    0 讨论(0)
  • 2021-01-27 13:11

    This turns out to be a known issue (which doesn't make it less annoying) and will only be fixed in a next major release, as per this Cake bug report.

    PHP 5.2 doesn't have namespace support which is apparently needed for Cake to support duplicate classnames. PHP 5.3 has namespace support and Cake 3.0 will require that version.

    0 讨论(0)
  • 2021-01-27 13:25

    May be it would be helpfull to override Cake' standard cache file names for Plugin to make Cache engine keep it separately. In main bootstrap file while loading plugin:

    CakePlugin::loadAll(array('Plugin' => array('bootstrap' => true));
    

    In Plugin direcrory /app/Plugin/Plugin/Config/bootstrap.php

    <?php
    Cache::config('_cake_core_', array(
        'engine' => 'File',
        'prefix' => 'cake_core_plugin_',
        'path' => CACHE . 'persistent' . DS,
        'serialize' => true,
        'duration' => '+999 days',
    ));
    ?>
    
    0 讨论(0)
提交回复
热议问题