您好,我的代码在CakePHP框架中无效,并且显示错误消息。
URL:
http://domainname.com/About/param1/param2
代码:
class AboutController extends AppController {
public $name = 'About';
public $helpers = array('Html');
public function index($arg1, $arg2)
{
print_r($this->request->params['pass']);
$this->set('title_for_layout','Sarasavi Bookshop - About Sarasavi Bookshop');
$this->set('nameforfiles','about');
}
}
错误讯息:
Missing Method in AboutController
Error: The action param1 is not defined in controller AboutController
Error: Create AboutController::param1() in file: app\Controller\AboutController.php.
<?php
class AboutController extends AppController {
public function param1() {
}
}
Notice: If you want to customize this error message, create app\View\Errors\missing_action.ctp
创建函数param1
后,我可以获得param2
,但我需要在param1
函数中同时获得param2
和index
而不创建其他操作
请帮帮我, 感谢
答案 0 :(得分:3)
如果您转到http://domainname.com/About/index/param1/param2
,原始代码就会有效如果您不想在网址中使用index
,我认为您没有,那么您需要定义路线。
将此添加到您的路线:
Router::connect(
'/About/*',
array('controller' => 'About', 'action' => 'index')
);
自动路由未指定操作但有params的请求转到index
操作。您需要为任何新的About
操作添加路由,以阻止它们默认转到索引的请求。
答案 1 :(得分:2)
您可能无需指定操作名称(索引)即可访问此URL:
这不会起作用,因为Cake希望在控制器名称后面看到动作名称。在这种情况下,param1被视为操作名称。 您可以使用网址
访问您的操作要克服这种情况,请为您的路由器制定新规则:
Router::connect(
'/about/:param1/:param2',
array('controller' => 'about', 'action' => 'index'),
array('param1', 'param2')
);