你好,我的代码不能在CakePHP框架中工作,它显示了一个错误消息。
网址:
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,但是我需要在index函数中同时获得param1和param2,而不需要创建另一个操作。
请帮帮我,谢谢
发布于 2013-02-20 10:26:19
如果你去了http://domainname.com/About/index/param1/param2,你的原始代码就能工作了。
如果您不希望index在url中(我假设您不需要),那么您需要定义一个路由。
将此添加到您的路线:
Router::connect(
'/About/*',
array('controller' => 'About', 'action' => 'index')
);若要自动路由未指定操作但有params可转到index操作的请求,请执行以下操作。但是,您需要为任何新的About操作添加一条路由,以阻止对它们的请求在默认情况下进行索引。
发布于 2013-02-20 10:32:46
您可能访问此URL而不指定操作名称(索引)如下:
/about/param1/param2
这将无法工作,因为Cake希望看到操作名称后面的控制器名称。在本例中,param1被视为操作名称。您可以使用URL访问操作
/about/index/param1/param2
要克服这种情况,为您的路由器制定一条新规则:
Router::connect(
'/about/:param1/:param2',
array('controller' => 'about', 'action' => 'index'),
array('param1', 'param2')
);https://stackoverflow.com/questions/14977359
复制相似问题