0

我的路线:

Router::connect('/', array('controller' => 'users', 'action' => 'homepage'));

Router::connect('/admin', array('controller' => 'users', 'action' => 'dashboard', 'admin' => true));

我的控制器

class BrandsController extends AppController {

/**
 * Components
 *
 * @var array
 */
public $components = array('Paginator', 'Session', 'Flash');


var $paginate = array('limit' => 100);

/**
 * admin_index method
 *
 * @return void
 */
public function admin_index()
{      
  index method      
}
 public function admin_searches() 
{
     searches method
}     

我的链接

<?php echo Router::url(array('controller' => 'brands', 'action' => 'searches')); ?>

我有一个 admin_searches.ctp 文件,其中也有 hello world 文本。

问题是:当我有一个href链接时,

<a href="<?php echo Router::url(array('controller' => 'brands','action' => 'admin_index')); ?>">Brands List</a> 

它工作正常并显示索引页面。现在,当我想显示搜索页面“admin_searches,ctp”时,它不会。我如何在链接中路由或修改路由文件,以便当我调用上述链接时,它会在我的控制器类中调用搜索方法

4

2 回答 2

1

假设您的 admin_searches 操作在您的 BrandsController 中,您应该在视图中打印链接,如下所示:

<?= $this->Html->link('admin searches',['controller' => 'brands', 'action'=>'admin_searches']); ?>

<a>它也会为您编写标签。我只是猜想,您可能不得不分出控制器和动作名称。但它是使用 HTML 助手生成链接的方式

重写 url 以映射到您的操作

它在文档中非常简单。在您的 routes.php 文件中添加如下内容:

Router::connect(
    '/brands/searches',
    array('controller' => 'brands', 'action' => 'admin_searches')
);

现在 /brands/searches 将转到您的品牌控制器中的 admin_searches 操作

https://book.cakephp.org/2.0/en/development/routing.html#connecting-routes

更新

你告诉我生成的链接是/magnus_backend/admin/brands/searches有几种方法可以路由到它。我可能会考虑重写基本网址,但这应该可以

Router::connect(
    '/magnus_backend/admin/brands/searches',
    array('controller' => 'brands', 'action' => 'admin_searches')
);
于 2017-04-12T09:04:25.913 回答
0

这是一个身份验证问题。每次我尝试创建一个新文件时,例如:admin_search 和一个名为 admin_search 的控制器方法,它都会回显“您不允许访问此位置”。因此,为了克服这个问题,我必须在 beforeFilter(); 中包含方法的身份验证;

public function beforeFilter() {
            parent::beforeFilter();
            $this->Auth->allow('admin_searches');
    }
于 2017-05-17T08:22:27.720 回答