我在Zend Framework 1应用程序中具有以下目录结构:
application/
├── controllers/
│ └── admin/
│ └── TaxRateController.php
│ └── MainInitController.php
我正在尝试访问taxrate
应有的访问权限,indexAction()
但由于获取了,所以我做错了什么Zend_Controller_Action_Exception
。到目前为止,这是我尝试过的所有URL组合的结果:
http://localhos/admin/tax-rate/index
http://localhos/admin/tax-rate
http://localhos/admin/taxrate
http://localhos/admin/taxrate/index
它们都产生相同的错误:
[message:protected] =>操作“ taxRate”不存在,也没有被困在__call()中
这是课程的内容:
class TaxRateController extends MainInitController
{
public function indexAction()
{
echo 'I am here'; die();
}
}
class MainInitController extends Zend_Controller_Action {
....
}
我在这里想念的是什么?我应该怎么称呼controller/action
?
更新1:
我试图将目录移到外部,controllers
但结果是相同的:
application/
│ └── admin/
│ └── TaxRateController.php
├── controllers/
│ └── MainInitController.php
我http://localhost/admin/taxrate
在这种情况下打电话。
如果使用基本结构,则需要花费时间和精力,但是可以做到
application/
├── controllers
│ └── admin
│ └── TaxRateController.php
您需要在引导程序的子目录下为每个控制器创建路由:
public function _initAdminRoute()
$router = Zend_Controller_Front::getInstance()->getRouter();
// structure
$router->addRoute(
'unique_route_name',
new Zend_Controller_Router_Route('/admin/controllerRoute/:action/*',
['controller' => 'subdirName_controllerRoute']
)
);
// Like this
$router->addRoute(
'admin_taxrate_route',
new Zend_Controller_Router_Route('/admin/tax-rate/:action/*', ['controller' => 'admin_tax-rate'])
);
}
之后,您需要使用子目录名称重命名控制器类,以便zend找到它们。但是不要更改控制器文件名。
class TaxRateController => class Admin_TaxRateController
现在,您可以使用控制器了,但是您的视图可能需要一点修复,因为现在zend无法找到您的视图目录。您需要将所有管理员视图移动到admin子目录,否则将引发类似于此的错误。
致命错误:在路径(application / views / scripts /)中找不到消息'script'admin / tax-rate / action.phtml'的未捕获异常'Zend_View_Exception'
希望这会有所帮助,但我仍然建议您使用模块结构。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句