我的路线:
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>
它工作正常并显示索引页面。现在,当我想显示一个搜索页面&#34; admin_searches,ctp&#34;它不会。我如何在链接中路由或修改路由文件,以便在我调用上述链接时调用我的控制器类中的搜索方法
答案 0 :(得分:1)
假设您的admin_searches操作在您的BrandsController中,您应该在视图中打印链接,如下所示:
<?= $this->Html->link('admin searches',['controller' => 'brands', 'action'=>'admin_searches']); ?>
它也会为您编写<a>
标签。你可能不得不将控制器和动作名称分出来,我猜对了。但这是使用HTML帮助程序生成链接的方式
重写网址以映射到您的操作
在文档中非常简单。在routes.php文件中添加如下内容:
Router::connect(
'/brands/searches',
array('controller' => 'brands', 'action' => 'admin_searches')
);
现在/ brands / searching将转到品牌控制器中的admin_searches操作
<强>更新强>
你告诉我生成的链接是/magnus_backend/admin/brands/searches
有几种方法可以路由到它。我可能会考虑重写基本网址,但这应该可行
Router::connect(
'/magnus_backend/admin/brands/searches',
array('controller' => 'brands', 'action' => 'admin_searches')
);
答案 1 :(得分:0)
这是一个身份验证问题。每次我尝试创建一个新文件,例如:admin_search和一个名为admin_search的控制器方法时,它回应“你不允许进入这个位置”。因此,要克服此问题,我必须在beforeFilter();
中包含方法的身份验证public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('admin_searches');
}