CakePHP 创建新页面
Posted
技术标签:
【中文标题】CakePHP 创建新页面【英文标题】:CakePHP create new page 【发布时间】:2016-02-02 08:41:47 【问题描述】:我想在 Cakephp 2 中创建新页面。我添加了两个文件:
app/controllers/productsimport_controller.php
其中包含:
<?php
class ProductsimportController extends AppController
function admin_index()
function isAuthorized()
return true;
和
app/views/productsimport/admin_index.ctp
其中包含:
<h2>Hello!</h2>
但我总是看到的不是这一页,而是我之前所在的上一页。例如,如果我在/admin/users
,如果我转到/admin/productsimport
,我仍然会看到/admin/users/
。或者有时404 page
,但不是我想要的。
可能是我忘了添加一些东西来让它工作吗?
【问题讨论】:
你的路线是什么样的?您是否将admin
设置为路由前缀?
路由中只有一行包含/admin
:Router::connect('/admin', array('controller' => 'users', 'action' => 'login', 'admin' => true));
。
【参考方案1】:
到控制器方法的默认路由是/productsimport/*
,所以要访问你想要的页面,url是/productsimport/admin_index
。
当你尝试输入/admin/productsimport
时,Cake 的作用是检查AdminsController
中的productsImport()
方法,它不存在,所以它呈现索引。
您可以在路由器中更改此行为
【讨论】:
最奇怪的是没有AdminsController
或AdminController
。 /admin/*
的其他部分通过它们自己的控制器工作,例如 ContactsController
和方法 admin_index()
。
无论如何Router::connect('/admin/productsimport/', array('controller' => 'productsimport', 'action' => 'admin_index'));在路由器中应该可以工作【参考方案2】:
您的问题似乎是路由问题,听起来您没有为/admin/productsimport
设置路由。
如果您希望控制器中所有以admin_
为前缀的操作都具有route prefix admin
,那么您需要在app/Config/core.php
中启用路由前缀:-
Configure::write('Routing.prefixes', array('admin'));
这将更改任何以 action_
为前缀的控制器操作的路由,例如:admin_edit
到 /admin/controller/edit
。
否则,您将需要为要以这种方式访问的每个控制器操作设置路由。因此,对于您的特定示例,您需要在app/Config/routes.php
:-
Router::connect('/admin/productsimport/',
array('controller' => 'productsimport', 'action' => 'admin_index')
);
为admin
路由添加前缀意味着这将是不必要的。
【讨论】:
我在里面有这个app/config/core.php
:Configure::write('Routing.admin', 'admin');
。我认为这就是为什么/admin/contacts
将在ContactsController
中使用方法admin_index()
。
我将Router::connect('/admin/productsimport/', array('controller' => 'productsimport', 'action' => 'admin_index'));
添加到app/Config/routes.php
,现在/admin/productsimport/
出现错误:Error: ProductsimportController::admin_index() cannot be accessed directly.
。
我不熟悉'Routing.admin'
配置设置,这可能特定于您的应用程序。路由前缀应配置为'Routing.prefixes'
,如我的回答所示。您可能需要检查 'Routing.admin'
的使用位置,以查看这是否改变了 admin
路由的处理方式。否则,您应该考虑使用描述的前缀方法。
@mrVG 没问题。如果这有助于您解决问题,请投票和/或将其标记为正确答案,以便将来可能会帮助其他遇到类似问题的人。 :-)以上是关于CakePHP 创建新页面的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cakephp-jwt-auth [CakePHP 3] 过期后颁发新令牌